jihuaqiang 9 hours ago
parent
commit
71140358c9
1 changed files with 10 additions and 1 deletions
  1. 10 1
      examples/content_finder/db/schedule.py

+ 10 - 1
examples/content_finder/db/schedule.py

@@ -60,16 +60,25 @@ def create_task_record(demand_content_id: int, trace_id: str = "", status: int =
     在 demand_find_task 中新增一条记录。
     在 demand_find_task 中新增一条记录。
 
 
     初始创建时 trace_id 可置为空字符串,任务完成后通过 update_task_on_complete 更新。
     初始创建时 trace_id 可置为空字符串,任务完成后通过 update_task_on_complete 更新。
+
+    若 uk_trace_demand 冲突:仅当原行 status 为失败时,将 trace_id/status 重置为本次插入值
+    (用于上次失败且 trace_id 仍为空时,定时任务会再次选中同一需求,不能重复 INSERT 空 trace)。
     """
     """
     sql = """
     sql = """
     INSERT INTO demand_find_task (trace_id, demand_content_id, status)
     INSERT INTO demand_find_task (trace_id, demand_content_id, status)
     VALUES (%s, %s, %s)
     VALUES (%s, %s, %s)
+    ON DUPLICATE KEY UPDATE
+        trace_id = IF(status = %s, VALUES(trace_id), trace_id),
+        status = IF(status = %s, VALUES(status), status)
     """
     """
     conn = None
     conn = None
     try:
     try:
         conn = get_connection()
         conn = get_connection()
         with conn.cursor() as cur:
         with conn.cursor() as cur:
-            cur.execute(sql, (trace_id, demand_content_id, status))
+            cur.execute(
+                sql,
+                (trace_id, demand_content_id, status, STATUS_FAILED, STATUS_FAILED),
+            )
         logger.info(f"创建任务记录: demand_content_id={demand_content_id}")
         logger.info(f"创建任务记录: demand_content_id={demand_content_id}")
     except Exception as e:
     except Exception as e:
         logger.error(f"create_task_record 失败: {e}", exc_info=True)
         logger.error(f"create_task_record 失败: {e}", exc_info=True)