|
|
@@ -476,7 +476,14 @@ async def _background_execute(
|
|
|
"message": str(exc),
|
|
|
}))
|
|
|
finally:
|
|
|
- _running_tasks.pop(task_id, None)
|
|
|
+ # 不立即清理 _running_tasks,让 GET SSE 端点消费事件后自行清理。
|
|
|
+ # 兜底:30s 后如仍无人消费则清理。
|
|
|
+ async def _delayed_cleanup():
|
|
|
+ await asyncio.sleep(30)
|
|
|
+ if task_id in _running_tasks:
|
|
|
+ logger.warning("[_background_execute] 任务 %s 30s 未被消费,强制清理", task_id)
|
|
|
+ _running_tasks.pop(task_id, None)
|
|
|
+ asyncio.create_task(_delayed_cleanup())
|
|
|
|
|
|
|
|
|
# ============ SSE 断线重连端点 ============
|