|
|
@@ -12,21 +12,6 @@ from app.utils.scheme import CardType
|
|
|
logger = get_logger(__name__)
|
|
|
router = APIRouter()
|
|
|
|
|
|
-INFERENCE_LIMIT = 2
|
|
|
-UPLOAD_LIMIT = 4
|
|
|
-inference_semaphore = asyncio.Semaphore(INFERENCE_LIMIT)
|
|
|
-upload_semaphore = asyncio.Semaphore(UPLOAD_LIMIT)
|
|
|
-
|
|
|
-# 推理调用加 semaphore
|
|
|
-async def safe_process_main_image(session, file_bytes, filename, score_type, is_reflect_str):
|
|
|
- async with inference_semaphore:
|
|
|
- return await process_main_image(session, file_bytes, filename, score_type, is_reflect_str)
|
|
|
-
|
|
|
-# 上传调用加 semaphore
|
|
|
-async def safe_upload_task(task_func, *args, **kwargs):
|
|
|
- async with upload_semaphore:
|
|
|
- return await task_func(*args, **kwargs)
|
|
|
-
|
|
|
|
|
|
# --- 内部辅助函数 ---
|
|
|
async def call_api_with_bytes(
|
|
|
@@ -213,7 +198,7 @@ async def auto_import_script_api(
|
|
|
if len(f_bytes) == 0:
|
|
|
raise HTTPException(status_code=400, detail=f"图片文件 {f_name} 内容为空")
|
|
|
|
|
|
- res = await safe_process_main_image(session, f_bytes, f_name, img_type, is_reflect_str)
|
|
|
+ res = await process_main_image(session, f_bytes, f_name, img_type, is_reflect_str)
|
|
|
processed_results.append(res)
|
|
|
|
|
|
card_id = await create_card_record(
|
|
|
@@ -224,10 +209,10 @@ async def auto_import_script_api(
|
|
|
# ---------- 修改点:safe_upload_task 调用 + gather ----------
|
|
|
upload_tasks = []
|
|
|
for res in processed_results:
|
|
|
- upload_tasks.append(safe_upload_task(upload_main_image, session, local_base_url, card_id, res))
|
|
|
+ upload_tasks.append(upload_main_image(session, local_base_url, card_id, res))
|
|
|
|
|
|
for img_type, (f_bytes, f_name) in gray_bytes_data.items():
|
|
|
- upload_tasks.append(safe_upload_task(upload_gray_image, session, local_base_url, card_id, img_type, f_bytes, f_name))
|
|
|
+ upload_tasks.append(upload_gray_image(session, local_base_url, card_id, img_type, f_bytes, f_name))
|
|
|
|
|
|
if upload_tasks:
|
|
|
await asyncio.gather(*upload_tasks)
|
|
|
@@ -247,6 +232,7 @@ async def auto_import_script_api(
|
|
|
logger.error(f"[流程终止] 发生异常: {e}")
|
|
|
raise HTTPException(status_code=500, detail=f"自动化处理异常: {str(e)}")
|
|
|
|
|
|
+
|
|
|
@router.post("/process_and_import_url", summary="通过URL自动化处理并导入卡牌数据")
|
|
|
async def auto_import_url_script_api(
|
|
|
request: Request,
|
|
|
@@ -319,7 +305,7 @@ async def auto_import_url_script_api(
|
|
|
for img_type, (f_bytes, f_name) in main_bytes_data.items():
|
|
|
if len(f_bytes) == 0:
|
|
|
raise HTTPException(status_code=400, detail=f"图片文件 {f_name} 内容为空")
|
|
|
- res = await safe_process_main_image(session, f_bytes, f_name, img_type, is_reflect_str)
|
|
|
+ res = await process_main_image(session, f_bytes, f_name, img_type, is_reflect_str)
|
|
|
processed_results.append(res)
|
|
|
|
|
|
card_id = await create_card_record(session, local_base_url, card_name, cardNo, card_type)
|
|
|
@@ -328,10 +314,10 @@ async def auto_import_url_script_api(
|
|
|
# ---------- 修改点:safe_upload_task 调用 + gather ----------
|
|
|
upload_tasks = []
|
|
|
for res in processed_results:
|
|
|
- upload_tasks.append(safe_upload_task(upload_main_image, session, local_base_url, card_id, res))
|
|
|
+ upload_tasks.append(upload_main_image(session, local_base_url, card_id, res))
|
|
|
|
|
|
for img_type, (f_bytes, f_name) in gray_bytes_data.items():
|
|
|
- upload_tasks.append(safe_upload_task(upload_gray_image, session, local_base_url, card_id, img_type, f_bytes, f_name))
|
|
|
+ upload_tasks.append(upload_gray_image(session, local_base_url, card_id, img_type, f_bytes, f_name))
|
|
|
|
|
|
if upload_tasks:
|
|
|
await asyncio.gather(*upload_tasks)
|
|
|
@@ -349,4 +335,4 @@ async def auto_import_url_script_api(
|
|
|
raise
|
|
|
except Exception as e:
|
|
|
logger.error(f"[URL导入流程终止] 发生异常: {e}")
|
|
|
- raise HTTPException(status_code=500, detail=f"自动化处理异常: {str(e)}")
|
|
|
+ raise HTTPException(status_code=500, detail=f"自动化处理异常: {str(e)}")
|