docs: add image task retry plan

This commit is contained in:
QiuSW
2026-07-09 14:17:22 +08:00
parent 20a73440af
commit e3598bfe8b
3 changed files with 20 additions and 3 deletions
+2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+14
View File
@@ -1791,3 +1791,17 @@
- `py -3.12 manage.py test apps.api.tests.GenerateApiTests.test_run_image_tasks_logs_failed_task_alias_error_and_duration --keepdb --noinput --verbosity 2`:通过,1 test OK。 - `py -3.12 manage.py test apps.api.tests.GenerateApiTests.test_run_image_tasks_logs_failed_task_alias_error_and_duration --keepdb --noinput --verbosity 2`:通过,1 test OK。
- `py -3.12 manage.py test apps.api.tests.GenerateApiTests --keepdb --noinput --verbosity 1`:通过,32 tests OK。 - `py -3.12 manage.py test apps.api.tests.GenerateApiTests --keepdb --noinput --verbosity 1`:通过,32 tests OK。
- 决策:暂不把线上 `cmhub-image-worker` 直接扩到 100。100 个进程会同时放大 MySQL 连接、上游请求、图片下载和本地写文件压力;在上游已经出现 `upstream_timeout` 时,直接 100 并发更可能放大失败率。建议先用新日志观测后按 2、4、8、16 逐级扩容。 - 决策:暂不把线上 `cmhub-image-worker` 直接扩到 100。100 个进程会同时放大 MySQL 连接、上游请求、图片下载和本地写文件压力;在上游已经出现 `upstream_timeout` 时,直接 100 并发更可能放大失败率。建议先用新日志观测后按 2、4、8、16 逐级扩容。
## 2026-07-09 文档登记:T-616 生图失败自动重试 2 次
- 状态:DONE(仅任务登记,未改代码)。
- 背景:线上 `api.vectorengine.ai` 部分生图任务在上游读取截止内返回 `Read timed out`,现有异步任务会立即 `failed` 并退点。为降低偶发上游超时对用户的失败率,需要在异步 worker 层增加可控重试。
- 文档变更:
- `docs/06-tasks.md`:新增 T-616「生图失败自动重试 2 次」,状态 TODO;明确最多 3 次上游调用、只预扣一次、前两次临时性失败重排队不退点、最终失败才退点。
- `docs/current-state.md`:同步 T-616 为下一个可领取任务。
- 方案要点:
- 只重试 `upstream_timeout`、网络连接错误、上游 502/503/504 等临时性错误。
- 不重试敏感词命中、点数不足、未定价、模型/别名配置不可用、参数错误、Provider 配置错误等确定性错误。
- 新增 `next_attempt_at` 与 `IMAGE_TASK_MAX_RETRIES` / `IMAGE_TASK_RETRY_BACKOFF_SECONDS` 等配置;worker 只抢到达重试时间的 queued 任务。
- 轮询响应可兼容性新增 `attempt_count`、`max_attempts`、`next_attempt_at`;日志新增 attempt / retrying / next_attempt_at 字段。
- 验证:仅文档更新;提交前执行 `git diff --check`。