|
|
@@ -14,10 +14,6 @@ from src.workflows.decode_workflow import DecodeWorkflow
|
|
|
logger.add(sink=sys.stderr, level="ERROR", backtrace=True, diagnose=True)
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
def invoke_evaluate_workflow(evaluate_params: Dict[str, Any]):
|
|
|
"""主函数"""
|
|
|
workflow = DecodeWorkflow()
|
|
|
@@ -31,11 +27,11 @@ def invoke_evaluate_workflow(evaluate_params: Dict[str, Any]):
|
|
|
|
|
|
def get_evaluate_result_by_id(evaluate_id:str):
|
|
|
sql = "SELECT * FROM evaluate_record WHERE evaluate_id = %s"
|
|
|
- tasks = mysql.fetchone(sql, (evaluate_id,))
|
|
|
- if not tasks:
|
|
|
+ evaluate_record = mysql.fetchone(sql, (evaluate_id,))
|
|
|
+ if not evaluate_record:
|
|
|
logger.info(f"evaluate_id = {evaluate_id} , 任务不存在")
|
|
|
return None
|
|
|
- return tasks['evaluate_result'], tasks['status'],tasks['error_reason']
|
|
|
+ return evaluate_record['evaluate_result'], evaluate_record['status'],evaluate_record['error_reason']
|
|
|
|
|
|
|
|
|
def evaluate_task_status_handler():
|
|
|
@@ -63,19 +59,34 @@ def evaluate_task_status_handler():
|
|
|
current_timestamp = int(time.time() * 1000)
|
|
|
|
|
|
evaluate_result = invoke_evaluate_workflow(evaluate_params)
|
|
|
-
|
|
|
- if evaluate_result:
|
|
|
- # 更新任务状态为2,任务完成
|
|
|
- sql = "UPDATE evaluate_record SET status = 2, evaluate_result = %s WHERE evaluate_id = %s"
|
|
|
- mysql.execute(sql, (json.dumps(evaluate_result),evaluate_id))
|
|
|
- logger.info(f"evaluate_id = {evaluate_id} , evaluate_result = {evaluate_result}")
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+ logger.info(f" 🐔 评估结果: evaluate_result = {evaluate_result}")
|
|
|
+
|
|
|
+ # 根据返回结果判断任务状态:仅当 status==2 时置为完成,否则置为失败
|
|
|
+ status_code = None
|
|
|
+ if isinstance(evaluate_result, dict):
|
|
|
+ raw_status = evaluate_result.get("status")
|
|
|
+ if raw_status is not None:
|
|
|
+ try:
|
|
|
+ status_code = int(raw_status)
|
|
|
+ except Exception:
|
|
|
+ status_code = 3
|
|
|
+ else:
|
|
|
+ status_code = 2
|
|
|
+ else:
|
|
|
+ status_code = 2 if evaluate_result else 3
|
|
|
+
|
|
|
+ elapsed = current_timestamp - task_create_timestamp
|
|
|
+ if status_code == 2:
|
|
|
+ sql = "UPDATE evaluate_record SET status = 2 WHERE evaluate_id = %s"
|
|
|
+ mysql.execute(sql, (evaluate_id,))
|
|
|
+ logger.info(f"evaluate_id = {evaluate_id} , 任务完成,更新为2")
|
|
|
+ elif elapsed > 1000 * 60 * 60:
|
|
|
+ sql = "UPDATE evaluate_record SET status = 3 WHERE evaluate_id = %s"
|
|
|
+ mysql.execute(sql, (evaluate_id,))
|
|
|
+ logger.info(f"evaluate_id = {evaluate_id} ,任务超时,更新为3")
|
|
|
else:
|
|
|
- if current_timestamp - task_create_timestamp > 1000 * 60 * 60:
|
|
|
- sql = "UPDATE evaluate_record SET status = 3, error_reason = %s WHERE evaluate_id = %s"
|
|
|
- mysql.execute(sql, (json.dumps(evaluate_result),evaluate_id))
|
|
|
- logger.info(f"evaluate_id = {evaluate_id} ,任务状态异常")
|
|
|
+ logger.info(f"evaluate_id = {evaluate_id} ,未成功且未超时,保持状态1")
|
|
|
except Exception as e:
|
|
|
logger.error(f"evaluate_id = {evaluate_id} , error = {e}")
|
|
|
sql = "UPDATE evaluate_record SET status = 3, error_reason = %s WHERE evaluate_id = %s"
|