优化脚本生成卡住问题

This commit is contained in:
Azmat@qq.com
2026-09-02 15:12:50 +08:00
parent c9522eea08
commit 22ed2833ad
5 changed files with 205 additions and 1 deletions
@@ -27,6 +27,7 @@ from apps.ai.script_agent import (
)
from apps.ai.services import (
collect_video_review_blockers,
reap_stale_script_tasks,
create_export_job,
generate_base_asset,
generate_person_triview,
@@ -550,9 +551,17 @@ def _advance_script(job: QuickCreateJob) -> int | None:
_enqueue_script(str(job.id))
return SCRIPT_POLL_SECONDS
# 先回收被进程重启丢下的僵尸脚本任务(部署滚动更新最常见),否则下面会一直命中「在途」分支:
# 任务行永远停在 SUBMITTED、预扣积分冻着,而本函数底部的 SCRIPT_TIMEOUT 判定根本走不到。
reap_stale_script_tasks(project=job.project)
latest = _latest_script_task(job.project)
if latest is not None and latest.status in _ACTIVE_TASK_STATUSES:
started_at = _parse_iso(metadata.get("script_started_at"))
# ★ 超时判定必须在这里也做一遍。原来它只写在函数末尾,而末尾只有「查不到在途任务」时才够得着 ——
# 任务卡在 SUBMITTED 时永远从这个分支 return,30 分钟上限形同虚设(实测挂了 2.5 小时还在转)。
if started_at and timezone.now() - started_at > SCRIPT_TIMEOUT:
fail_quick_create(job, "脚本生成超时,请稍后重试或进入专业模式查看")
return None
elapsed = int((timezone.now() - started_at).total_seconds()) if started_at else 0
_save_job(job, progress=min(44, 28 + elapsed // 8), message="正在生成分镜脚本…")
return SCRIPT_POLL_SECONDS