fix(vision): #2203 V2快速路径TimeoutError未捕获+max_retries=0不生效 #2203

Merged
xiaoxia merged 1 commits from fix/vision-v2-timeout-bugs into develop 2026-10-05 17:51:39 +08:00
Owner

E2E发现两个P0 bug

Bug1: TimeoutError 未捕获

as_completed(timeout) 抛 TimeoutError 没被 catch,异常直接冒泡跳过 pro fallback,3/3 返回空结果。
修复:try/except TimeoutError,cancel 未完成 futures,继续走 pro VLM 兜底。

Bug2: max_retries=0 在子线程里不生效

外层_step_image_analysis设置client.max_retries=0,但ThreadPool里实际仍重试1次(2次×6s=12s超时)。
修复:vlm_fast_json/vlm_fallback内部强制max_retries=0,finally里恢复。

3. 收紧超时

fast总超时8→6s、lite JSON 6→5s、OCR 8→5s,lite不够快时尽快走pro兜底。

本地mock验证

  • fast命中1.5s返回有效portrait_prompt,max_retries=0生效(仅调用1次)
  • fast超时6s正确触发pro fallback

请合入后立即部署staging重跑E2E。

## E2E发现两个P0 bug ### Bug1: TimeoutError 未捕获 as_completed(timeout) 抛 TimeoutError 没被 catch,异常直接冒泡跳过 pro fallback,3/3 返回空结果。 修复:try/except TimeoutError,cancel 未完成 futures,继续走 pro VLM 兜底。 ### Bug2: max_retries=0 在子线程里不生效 外层_step_image_analysis设置client.max_retries=0,但ThreadPool里实际仍重试1次(2次×6s=12s超时)。 修复:vlm_fast_json/vlm_fallback内部强制max_retries=0,finally里恢复。 ### 3. 收紧超时 fast总超时8→6s、lite JSON 6→5s、OCR 8→5s,lite不够快时尽快走pro兜底。 ## 本地mock验证 - fast命中1.5s返回有效portrait_prompt,max_retries=0生效(仅调用1次) - fast超时6s正确触发pro fallback 请合入后立即部署staging重跑E2E。
xiaoxia added 1 commit 2026-10-05 17:50:45 +08:00
fix(vision): #2203 V2快速路径两个P0 bug修复
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Check push changed paths (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 / 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 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
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m0s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m21s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 44s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m16s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 14s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m22s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m25s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 5m53s
AI Code Review / AI Code Review (pull_request) Successful in 6m57s
CI/CD Pipeline / Validate - Style (pull_request) Failing after 7m39s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m35s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 13m20s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 15m11s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 1s
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
9344314eac
E2E发现两个P0 bug:
1. as_completed(timeout=...)抛TimeoutError时未被捕获,异常直接冒泡到外层,
   跳过了pro VLM兜底路径,导致3/3返回空结果。
   修复:包裹try/except TimeoutError,cancel未完成futures,继续走pro兜底。

2. 外层_step_image_analysis设置client.max_retries=0不生效(ThreadPool线程
   里可能被其他任务覆盖/共享单例状态),实际仍重试1次(2次调用×6s=12s超时)。
   修复:在vlm_fast_json/vlm_fallback内部强制max_retries=0并在finally里恢复。

3. 收紧超时:fast总超时8→6s、lite JSON 6→5s、OCR 8→5s,让lite不够快时
   尽快走pro兜底(pro单次45s足够)。

本地mock验证:fast命中1.5s返回有效portrait_prompt;fast超时6s正确触发pro fallback。
xiaoxia merged commit 12b0d15473 into develop 2026-10-05 17:51:39 +08:00

🗑️ 预览环境已清理

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

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

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

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2203 | | 预览链接 | [https://pr-2203.preview.xiaoxiajianji.com](https://pr-2203.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Sign in to join this conversation.