|
@@ -691,10 +691,10 @@ async def extract(request: ExtractRequest):
|
|
|
logger.info(f"收到提取请求: requestId={requestId}, query={query}")
|
|
|
|
|
|
# 并发防抖:同一 requestId 只允许一个在运行
|
|
|
- async with RUNNING_LOCK:
|
|
|
- if requestId in extraction_requests:
|
|
|
- return {"status": 1, "requestId": requestId, "message": "请求已在处理中"}
|
|
|
- extraction_requests.add(requestId)
|
|
|
+
|
|
|
+ if requestId in extraction_requests:
|
|
|
+ return {"status": 1, "requestId": requestId, "message": "请求已在处理中"}
|
|
|
+ extraction_requests.add(requestId)
|
|
|
|
|
|
# 更新状态为处理中
|
|
|
update_extract_status(requestId, 1)
|
|
@@ -721,9 +721,7 @@ async def extract(request: ExtractRequest):
|
|
|
update_extract_status(requestId, 3)
|
|
|
raise
|
|
|
finally:
|
|
|
- # 无论成功失败,都从运行集合中移除
|
|
|
- async with RUNNING_LOCK:
|
|
|
- extraction_requests.discard(requestId)
|
|
|
+ extraction_requests.discard(requestId)
|
|
|
|
|
|
# 创建异步任务但不等待完成
|
|
|
asyncio.create_task(_execute_extract_async())
|
|
@@ -735,8 +733,7 @@ async def extract(request: ExtractRequest):
|
|
|
# 发生异常,更新状态为处理失败
|
|
|
update_extract_status(requestId, 3)
|
|
|
# 从运行集合中移除
|
|
|
- async with RUNNING_LOCK:
|
|
|
- extraction_requests.discard(requestId)
|
|
|
+ extraction_requests.discard(requestId)
|
|
|
raise HTTPException(status_code=500, detail=f"启动提取任务失败: {str(e)}")
|
|
|
|
|
|
@app.post("/expand")
|