fix(ai-avatar): 对口型轮询timeout/间隔/总时长修复,单次超时不中断轮询 #2165

Merged
xiaoxia merged 1 commits from fix/ai-avatar-lipsync-poll-timeout into develop 2026-10-03 22:38:08 +08:00
Owner

问题

MuseTalk 对口型渲染 8s 视频约 54s + 排队时间,但前端轮询 GET /lipsync/jobs/{id} 的 axios timeout 只设 60s,排队稍长就 AxiosError timeout。

修改

  1. 单请求超时 60s → 300s(5分钟):getLipsyncJob 与 getRenderJob 都改为 timeout:300_000
  2. 轮询间隔 3s → 5s:降低请求频率,减轻服务端压力
  3. 总时长上限 10 分钟:新增 LIPSYNC_POLL_MAX_MS=10min,超过后停止轮询并 toast 提示「对口型渲染时间较长,已停止自动刷新,请稍后在历史记录中查看」,弹窗 error_message 同步显示「渲染时间较长,请稍后在历史记录中查看」
  4. 单次异常不中断轮询:catch 分支从 console.error 改为 console.warn,继续等待下一轮;原逻辑虽未 clearInterval 但 throw 后下一次仍会触发,这里显式保持轮询

验证

  • tsc --noEmit: 0 errors
  • vite build: success (AiAvatarPage-DK5uOZpC.js)
## 问题 MuseTalk 对口型渲染 8s 视频约 54s + 排队时间,但前端轮询 GET /lipsync/jobs/{id} 的 axios timeout 只设 60s,排队稍长就 AxiosError timeout。 ## 修改 1. **单请求超时 60s → 300s(5分钟)**:getLipsyncJob 与 getRenderJob 都改为 timeout:300_000 2. **轮询间隔 3s → 5s**:降低请求频率,减轻服务端压力 3. **总时长上限 10 分钟**:新增 LIPSYNC_POLL_MAX_MS=10min,超过后停止轮询并 toast 提示「对口型渲染时间较长,已停止自动刷新,请稍后在历史记录中查看」,弹窗 error_message 同步显示「渲染时间较长,请稍后在历史记录中查看」 4. **单次异常不中断轮询**:catch 分支从 console.error 改为 console.warn,继续等待下一轮;原逻辑虽未 clearInterval 但 throw 后下一次仍会触发,这里显式保持轮询 ## 验证 - tsc --noEmit: 0 errors - vite build: success (AiAvatarPage-DK5uOZpC.js)
xiaoxia added 1 commit 2026-10-03 22:06:06 +08:00
fix(ai-avatar): 对口型轮询timeout/间隔/总时长修复,timeout不再中断轮询
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (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 / Build Staging Worker 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 Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web 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
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m38s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m54s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m2s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m57s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m19s
AI Code Review / AI Code Review (pull_request) Successful in 7m36s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m40s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 16m18s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 20m27s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 2m13s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 5m33s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 42m2s
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 / CI Gate (pull_request) Successful in 2s
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
2bf49db7ef
- getLipsyncJob/getRenderJob 单请求超时 60s → 300s(5分钟),适配 MuseTalk 8s视频~54s+排队耗时
- 轮询间隔 3s → 5s,降低请求频率
- 新增总时长上限 10 分钟(LIPSYNC_POLL_MAX_MS=10min),超时后停止轮询并提示"渲染时间较长,请稍后在历史记录中查看"
- 单次轮询异常(含AxiosError timeout)改为console.warn后继续下一轮,不中断轮询流程
- tsc + vite build 验证通过
auto-approve-bot approved these changes 2026-10-03 22:08:09 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-10-03 22:08:09 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

项目 详情
PR号 #2165
预览链接 https://pr-2165.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2165 | | 预览链接 | [https://pr-2165.preview.xiaoxiajianji.com](https://pr-2165.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia merged commit 0d70074182 into develop 2026-10-03 22:38:08 +08:00

🗑️ 预览环境已清理

PR #2165 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #2165 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.