浏览代码

fix(decode_task): 改进任务状态处理逻辑并移除主函数调用

根据返回结果判断任务状态,仅当status==2时置为完成,否则置为失败
移除调试用的主函数调用
max_liu 3 天之前
父节点
当前提交
8f4bdedb94
共有 1 个文件被更改,包括 28 次插入11 次删除
  1. 28 11
      decode_task/decodeTask.py

+ 28 - 11
decode_task/decodeTask.py

@@ -1,3 +1,4 @@
+import json
 from loguru import logger
 import sys
 import time
@@ -62,19 +63,35 @@ def  decode_task_status_handler():
         current_timestamp = int(time.time() * 1000)
 
         decode_result = invoke_decode_workflow(task_params)
+        logger.info(f" 🐔 结构结果: decode_result = {decode_result}")
+
+        # 根据返回结果判断任务状态:仅当 status==2 时置为完成,否则置为失败
+        status_code = None
+        if isinstance(decode_result, dict):
+            raw_status = decode_result.get("status")
+            if raw_status is not None:
+                try:
+                    status_code = int(raw_status)
+                except Exception:
+                    status_code = 3
+            elif decode_result.get("workflow_status") in ("failed", "incomplete") or decode_result.get("error"):
+                status_code = 3
+            else:
+                status_code = 2
+        else:
+            status_code = 2 if decode_result else 3
 
-        if decode_result:
-            # 更新任务状态为2,任务完成
+        elapsed = current_timestamp - task_create_timestamp
+        if status_code == 2:
             sql = "UPDATE decode_record SET task_status = 2 WHERE task_id = %s"
             mysql.execute(sql, (task_id,))
-            logger.info(f"task_id = {task_id} , decode_result = {decode_result}")
-
-           
+            logger.info(f"task_id = {task_id} , 任务完成,更新为2")
+        elif elapsed > 1000 * 60 * 60:
+            sql = "UPDATE decode_record SET task_status = 3 WHERE task_id = %s"
+            mysql.execute(sql, (task_id,))
+            logger.info(f"task_id = {task_id} ,任务超时,更新为3")
         else:
-            if current_timestamp - task_create_timestamp > 1000 * 60 * 60:
-                sql = "UPDATE decode_record SET task_status = 3 WHERE task_id = %s"
-                mysql.execute(sql, (task_id,))
-                logger.info(f"task_id = {task_id} ,任务状态异常")
+            logger.info(f"task_id = {task_id} ,未成功且未超时,保持状态1")
     except Exception as e:
         logger.error(f"task_id = {task_id} , error = {e}")
         sql = "UPDATE decode_record SET task_status = 3 WHERE task_id = %s"
@@ -83,6 +100,6 @@ def  decode_task_status_handler():
         raise RuntimeError(f"task_id={task_id} 任务异常: {e}")
 
 
-if __name__ == "__main__":
-    decode_task_status_handler()
+# if __name__ == "__main__":
+#     decode_task_status_handler()