chore: improve image worker logging

This commit is contained in:
QiuSW
2026-07-09 11:57:06 +08:00
parent d79bd6fae9
commit 20a73440af
5 changed files with 70 additions and 2 deletions
+17
View File
@@ -1774,3 +1774,20 @@
- 验证:仅文档更新;使用 `git diff --check` 检查格式。
- 决策:当前不改代码。`image_base64` 是桌面端主路径,submit 仍为短请求;`image_url` 阻塞属于边缘兼容路径。模型配置快照不作为热修,待队列积压或多模型价差扩大后单独立任务。
- 下一步:无需立即编码;继续按生产优先级处理支付回调闭环、客户端发布和线上遥测观察。
## 2026-07-09 热修:异步生图 worker 失败日志与扩容口径
- 状态:DONE。
- 背景:线上 admin 中多条生图任务停留在“待处理”。排查确认 `POST /api/v1/generate/image/tasks` 已返回 `202`,任务进入 `queued`;当前只有 1 个 `cmhub-image-worker` 串行消费,部分任务在上游 180 秒硬截止后 `upstream_timeout`,导致后续 queued 积压。
- 代码变更:
- `apps/api/management/commands/run_image_tasks.py`:worker 每处理一个任务输出结构化 stdout 行 `event=image_task_processed task_id=... status=... alias=... duration_ms=...`;失败 / 过期任务额外输出 `error_code`。
- `apps/api/tests.py`:新增目标测试,覆盖失败任务日志包含 `task_id`、别名、`error_code` 与 `duration_ms`,且不输出 prompt。
- 文档变更:
- `docs/deployment.md`:补充 worker 任务日志、排障口径和扩容策略;明确不要直接扩到 100 个 worker,应按 2、4、8、16 逐级观察。
- `docs/current-state.md`:同步当前 worker 日志字段和扩容口径。
- 验证:
- `py -3.12 -m py_compile apps\api\management\commands\run_image_tasks.py apps\api\tests.py`:通过。
- `py -3.12 manage.py check`:通过,0 issues。
- `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。
- 决策:暂不把线上 `cmhub-image-worker` 直接扩到 100。100 个进程会同时放大 MySQL 连接、上游请求、图片下载和本地写文件压力;在上游已经出现 `upstream_timeout` 时,直接 100 并发更可能放大失败率。建议先用新日志观测后按 2、4、8、16 逐级扩容。