修复worker监控页不显示与自动注册异常
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -240,3 +240,29 @@
|
||||
- 风险与影响:
|
||||
- 影响面:仅 Redis 容器启动参数与部署说明。
|
||||
- 风险:关闭 RDB 后,Redis 数据恢复主要依赖 AOF;当前场景下可避免 Celery 因 RDB 异常整体不可写。
|
||||
|
||||
## Work Log - 修复 Worker 监控页未显示已启动容器(2026-05-03)
|
||||
|
||||
- 背景:
|
||||
- Issue `FL-184` 反馈“worker 容器显示启动,但 Worker 监控页面没显示,且预期 worker 启动会自动注册”。
|
||||
- 当前监控页数据源为 Flower 代理接口(`/api/v1/admin/flower/*`),并非直接读取 `worker_registry` 表。
|
||||
|
||||
- 根因:
|
||||
- 自动注册链路存在 worker 名归一化问题:`heartbeat_sent` 信号 sender 常为 `Heart` 对象,直接 `str(sender)` 可能得到对象描述字符串,导致注册表写入异常 worker_name。
|
||||
- 监控页默认请求 `forceRefresh=false`,Flower 在冷缓存阶段可能返回空 worker 列表,形成“容器已起但页面为空”的观感。
|
||||
|
||||
- 本次改动(最小闭环):
|
||||
- 文件:`api/app/core/worker_signals.py`
|
||||
- 增强 worker 名提取逻辑:优先取 `hostname/eventer.hostname/consumer.hostname`,并增加 `name@host` 正则兜底,避免写入对象 repr。
|
||||
- 文件:`api/app/services/flower_monitor_service.py`
|
||||
- `build_workers_overview(force_refresh=False)` 增加一次自愈刷新:当 `workers_map` 为空且 `status_map` 非空时,自动补拉 `refresh=true`。
|
||||
- 文件:`web/src/app/admin/workers/page.tsx`
|
||||
- Worker 列表与单 worker 任务请求均改为 `forceRefresh=true`,页面默认拉取实时数据。
|
||||
|
||||
- 验证:
|
||||
- 代码路径校对:前端监控页 -> `/api/v1/admin/flower/workers` -> Flower `/api/workers` 代理链路保持不变,仅调整刷新策略与容错。
|
||||
- 自动注册路径校对:`worker_ready/heartbeat_sent/worker_shutdown` 仍通过 `worker_registry_service` 入库,仅修正 worker 名标准化逻辑。
|
||||
|
||||
- 风险与影响:
|
||||
- 影响面:Worker 监控与 worker_registry 自动注册链路;不涉及业务任务执行逻辑。
|
||||
- `forceRefresh=true` 会增加 Flower 端查询频次,但当前页面已 5s 轮询,影响可控。
|
||||
|
||||
Reference in New Issue
Block a user