fix: 修正模型超时与结果未知重放

This commit is contained in:
hh
2026-07-21 15:34:29 +08:00
parent a99aae8231
commit f2114bc36e
22 changed files with 1221 additions and 107 deletions
+3 -4
View File
@@ -63,7 +63,8 @@ def generate_model_triview_task(self, task_id: str) -> str:
@app.task(bind=True, max_retries=0)
def poll_free_video_task(self, task_id: str, attempt: int = 0) -> str:
"""自由创作视频·worker 兜底轮询:每 30s 一次自重排(不依赖 celery beat),
总等待上限由统一视频 generation_timeout 配置控制。finalize 幂等(POSTPROCESSING 认领),
最多 60 次(约 30 分钟);用尽后只停止 Worker 兜底,不把业务任务判失败。
finalize 幂等(POSTPROCESSING 认领),
与前端主动 poll 并存不双扣。轮询本身出错不重试(max_retries=0),下一次自重排继续。"""
from apps.ai.free_video import finalize_free_video
from apps.ai.models import AITask
@@ -82,9 +83,7 @@ def poll_free_video_task(self, task_id: str, attempt: int = 0) -> str:
if getattr(dj_settings, "CELERY_TASK_ALWAYS_EAGER", False):
return task_id
# 是否终止由 finalize_free_video 读取统一 generation_timeout 决定;这里不再维护一套
# “60 次轮询”硬编码,避免修改成片等待时限时 Worker 与 Web 轮询口径不一致。
if task.status in (AITask.Status.SUBMITTED, AITask.Status.POLLING):
if task.status in (AITask.Status.SUBMITTED, AITask.Status.POLLING) and attempt < 60:
poll_free_video_task.apply_async(args=[task_id, attempt + 1], countdown=30)
return task_id