fix(viral-video): 编导脚本生成timeout 90→150s + 修ai_client logger占位符bug
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m40s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m31s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 4m9s
AI Code Review / AI Code Review (pull_request) Successful in 4m44s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m39s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 4m46s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 46s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m22s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 7m16s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 9m39s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 18m32s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 2s

P0根因:用户09:57反馈『生成不了文案』,排查确认:
1. #2215的call_llm→chat_completion修复本身正确,凌晨/上午日志均验证意图解析HTTP 200成功(33s返回1505 tokens)
2. 编导脚本fast tmo=90s超时(#2183沿用至今,非#2215引入):doubao-seed-2-1-pro输出完整分镜脚本token量大,高峰期read timeout 90.1s,重试期间被watchtower容器重启打断
3. ai_client.py:287 logger.info格式串6个占位符只传5个参数(缺_req_timeout),每次chat_completion成功都打TypeError假错误栈,干扰排查

修复:
- 编导脚本fast tmo 90→150s,pro 120→150s,支持ENV VIRAL_VIDEO_SCRIPT_FAST_TIMEOUT/VIRAL_VIDEO_SCRIPT_PRO_TIMEOUT覆盖
- 补ai_client.py logger.info缺失的_req_timeout参数

文件变更:
- apps/worker/worker_app/tasks/viral_video.py: 编导脚本超时上调
- packages/shared/ai_client.py: logger占位符补参
This commit is contained in:
xiaoxia
2026-10-06 10:15:27 +08:00
parent 617c40e1d4
commit 93b3e896c8
2 changed files with 8 additions and 6 deletions
+7 -6
View File
@@ -910,18 +910,19 @@ def _step_script_generation(job: ViralVideoJob, intent: dict, image_analysis: di
_s = get_shared_settings() _s = get_shared_settings()
_fast = _s.doubao_fast_model _fast = _s.doubao_fast_model
_pro = getattr(_s, "doubao_model", None) or _fast _pro = getattr(_s, "doubao_model", None) or _fast
_script_fast_tmo = int(os.environ.get("VIRAL_VIDEO_SCRIPT_FAST_TIMEOUT", "150"))
_script_pro_tmo = int(os.environ.get("VIRAL_VIDEO_SCRIPT_PRO_TIMEOUT", "150"))
try: try:
# 第一次:快模型 25s # #2217: doubao-seed-2-1-pro生成长编导脚本高峰期>90s,上调到150s,支持ENV覆盖
normalized = _try_gen(_fast, 0.8, 2500, "fast-first", tmo=90) normalized = _try_gen(_fast, 0.8, 2500, "fast-first", tmo=_script_fast_tmo)
if normalized is not None: if normalized is not None:
return normalized return normalized
# #2183: 实测pro 1500tok输出需75.8s,单次timeout提到90s normalized = _try_gen(_fast, 0.6, 3200, "fast-retry", tmo=_script_fast_tmo)
normalized = _try_gen(_fast, 0.6, 3200, "fast-retry", tmo=90)
if normalized is not None: if normalized is not None:
return normalized return normalized
# 第三次:用主力模型兜底,给 120s # 第三次:用主力模型兜底
if _pro and _pro != _fast: if _pro and _pro != _fast:
normalized = _try_gen(_pro, 0.7, 3500, "pro-fallback", tmo=120) normalized = _try_gen(_pro, 0.7, 3500, "pro-fallback", tmo=_script_pro_tmo)
if normalized is not None: if normalized is not None:
return normalized return normalized
logger.warning("[爆款视频] 编导脚本三次都未生成合格结果,使用兜底脚本") logger.warning("[爆款视频] 编导脚本三次都未生成合格结果,使用兜底脚本")
+1
View File
@@ -291,6 +291,7 @@ class DoubaoClient:
data.get("usage", {}).get("completion_tokens", 0), data.get("usage", {}).get("completion_tokens", 0),
_elapsed, _elapsed,
attempt + 1, attempt + 1,
_req_timeout,
) )
return content.strip() return content.strip()
except Exception as e: except Exception as e: