tecuts commited on
Commit
9a87b07
·
verified ·
1 Parent(s): 7e3a584

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -6
app.py CHANGED
@@ -97,6 +97,19 @@ class DownloadResponse(BaseModel):
97
  file_size: int = None # Include file size in the response
98
 
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  @app.post("/download", response_model=DownloadResponse)
101
  async def download_file(request: DownloadRequest):
102
  try:
@@ -142,14 +155,13 @@ async def download_file(request: DownloadRequest):
142
 
143
  if not files:
144
  raise Exception("No files found in download directory after download attempt")
145
- # Ensure the file is fully written
146
-
147
- time.sleep(2) # Sleep for 2 second
148
  downloaded_file = files[0]
149
  logger.info(f"Downloaded file: {downloaded_file}")
150
 
 
 
151
 
152
-
153
  # Get the file size
154
  file_size = os.path.getsize(downloaded_file)
155
 
@@ -160,7 +172,7 @@ async def download_file(request: DownloadRequest):
160
  logger.info(f"Generated download URL: {download_url}")
161
 
162
  # Move back to original directory
163
-
164
 
165
  return DownloadResponse(
166
  success=True,
@@ -169,7 +181,7 @@ async def download_file(request: DownloadRequest):
169
  download_url=download_url,
170
  file_size=file_size # Include the file size in the response
171
  )
172
-
173
  except subprocess.CalledProcessError as e:
174
  logger.error(f"Download process failed: stdout={e.stdout}, stderr={e.stderr}")
175
  raise HTTPException(
@@ -189,6 +201,7 @@ async def download_file(request: DownloadRequest):
189
 
190
 
191
 
 
192
  @app.get("/test")
193
  async def test():
194
  """Test endpoint to verify setup"""
 
97
  file_size: int = None # Include file size in the response
98
 
99
 
100
+ def wait_for_file_to_complete(file_path, initial_size):
101
+ """
102
+ Wait until the file size stops increasing, indicating the download has completed.
103
+ """
104
+ while True:
105
+ current_size = os.path.getsize(file_path)
106
+ if current_size == initial_size:
107
+ break
108
+ initial_size = current_size
109
+ time.sleep(1) # Wait for 1 second before checking again
110
+
111
+
112
+
113
  @app.post("/download", response_model=DownloadResponse)
114
  async def download_file(request: DownloadRequest):
115
  try:
 
155
 
156
  if not files:
157
  raise Exception("No files found in download directory after download attempt")
158
+
 
 
159
  downloaded_file = files[0]
160
  logger.info(f"Downloaded file: {downloaded_file}")
161
 
162
+ # Ensure the file is fully written (wait for download to complete)
163
+ wait_for_file_to_complete(downloaded_file, initial_size=os.path.getsize(downloaded_file))
164
 
 
165
  # Get the file size
166
  file_size = os.path.getsize(downloaded_file)
167
 
 
172
  logger.info(f"Generated download URL: {download_url}")
173
 
174
  # Move back to original directory
175
+ os.chdir(original_dir)
176
 
177
  return DownloadResponse(
178
  success=True,
 
181
  download_url=download_url,
182
  file_size=file_size # Include the file size in the response
183
  )
184
+
185
  except subprocess.CalledProcessError as e:
186
  logger.error(f"Download process failed: stdout={e.stdout}, stderr={e.stderr}")
187
  raise HTTPException(
 
201
 
202
 
203
 
204
+
205
  @app.get("/test")
206
  async def test():
207
  """Test endpoint to verify setup"""