diff --git a/src/api/routes/algorithm_router.py b/src/api/routes/algorithm_router.py index 4b040d6..5ea26d7 100644 --- a/src/api/routes/algorithm_router.py +++ b/src/api/routes/algorithm_router.py @@ -127,12 +127,9 @@ def process_feature_calculation(feature_id: int) -> bool: return False -def process_pending_features() -> Dict[str, Any]: +async def process_pending_features(): """ - 处理所有待处理的人脸特征计算 - - 返回: - 处理结果统计 + 异步处理所有待处理的人脸特征计算 """ try: with db_manager.get_session() as session: @@ -164,46 +161,28 @@ def process_pending_features() -> Dict[str, Any]: logger.info(f"发现待处理特征: {total_pending}个, 超时特征: {total_timeout}个") # 处理超时记录 - timeout_success = 0 for feature in timeout_features: feature.status = FeatureStatus.FAILED feature.finish_time = datetime.now() - timeout_success += 1 if timeout_features: session.commit() # 处理待处理记录 processed_count = 0 - success_count = 0 for feature in pending_features: processed_count += 1 - if process_feature_calculation(feature.id): - success_count += 1 + process_feature_calculation(feature.id) # 每处理10个记录输出一次进度 if processed_count % 10 == 0: logger.info(f"处理进度: {processed_count}/{total_pending}") - return { - "total_pending": total_pending, - "total_timeout": total_timeout, - "processed_count": processed_count, - "success_count": success_count, - "timeout_handled": timeout_success - } + logger.info(f"特征计算处理完成: 共处理 {processed_count} 个特征") except Exception as e: logger.error(f"批量处理特征计算时发生异常: {str(e)}") - return { - "total_pending": 0, - "total_timeout": 0, - "processed_count": 0, - "success_count": 0, - "timeout_handled": 0, - "error": str(e) - } @router.post("/start-feature-calculation", summary="开始人脸特征计算") @@ -220,13 +199,12 @@ async def start_feature_calculation(background_tasks: BackgroundTasks): 返回处理结果统计 """ try: - # 在后台任务中处理,避免阻塞请求 - result = process_pending_features() + # 在后台任务中异步处理,避免阻塞请求 + background_tasks.add_task(process_pending_features) return { "success": True, - "message": "特征计算处理完成", - "data": result + "message": "收到特征值计算请求" } except Exception as e: