|
@@ -411,25 +411,28 @@ async def get_file_process_status(
|
|
MAX_FILE_PROCESSING_DURATION = 3600 * 2
|
|
MAX_FILE_PROCESSING_DURATION = 3600 * 2
|
|
|
|
|
|
async def event_stream(file_item):
|
|
async def event_stream(file_item):
|
|
- for _ in range(MAX_FILE_PROCESSING_DURATION):
|
|
|
|
- file_item = Files.get_file_by_id(file_item.id)
|
|
|
|
- if file_item:
|
|
|
|
- data = file_item.model_dump().get("data", {})
|
|
|
|
- status = data.get("status")
|
|
|
|
-
|
|
|
|
- if status:
|
|
|
|
- event = {"status": status}
|
|
|
|
- if status == "failed":
|
|
|
|
- event["error"] = data.get("error")
|
|
|
|
-
|
|
|
|
- yield f"data: {json.dumps(event)}\n\n"
|
|
|
|
- if status in ("completed", "failed"):
|
|
|
|
|
|
+ if file_item:
|
|
|
|
+ for _ in range(MAX_FILE_PROCESSING_DURATION):
|
|
|
|
+ file_item = Files.get_file_by_id(file_item.id)
|
|
|
|
+ if file_item:
|
|
|
|
+ data = file_item.model_dump().get("data", {})
|
|
|
|
+ status = data.get("status")
|
|
|
|
+
|
|
|
|
+ if status:
|
|
|
|
+ event = {"status": status}
|
|
|
|
+ if status == "failed":
|
|
|
|
+ event["error"] = data.get("error")
|
|
|
|
+
|
|
|
|
+ yield f"data: {json.dumps(event)}\n\n"
|
|
|
|
+ if status in ("completed", "failed"):
|
|
|
|
+ break
|
|
|
|
+ else:
|
|
|
|
+ # Legacy
|
|
break
|
|
break
|
|
- else:
|
|
|
|
- # Legacy
|
|
|
|
- break
|
|
|
|
|
|
|
|
- await asyncio.sleep(0.5)
|
|
|
|
|
|
+ await asyncio.sleep(0.5)
|
|
|
|
+ else:
|
|
|
|
+ yield f"data: {json.dumps({'status': 'not_found'})}\n\n"
|
|
|
|
|
|
return StreamingResponse(
|
|
return StreamingResponse(
|
|
event_stream(file),
|
|
event_stream(file),
|