Workers
Workers 页面用于查看 ASP 五类后台 Worker 的当前运行状态。它可以识别“容器仍在运行,但 Worker 轮询已经失败”这一类仅查看 Docker 容器状态难以发现的问题。
入口与权限
Workers 位于 System Settings 的 Workers Tab,仅 Admin 可以访问。
页面进入时立即读取一次状态,之后每 10 秒自动更新。页面不提供手动刷新按钮;请求失败后会在下一周期自动重试。
Worker 类型
| Worker | Django 子命令 | 用途 |
|---|---|---|
| Agentic Module Worker | run_agentic_module_worker | 消费 Module Redis Stream 并执行自定义 Module。 |
| Case Analysis Worker | run_agentic_case_analysis_worker | 执行待处理的 Case Analysis Job。 |
| Playbook Worker | run_agentic_playbook_worker | 执行待处理的 Playbook Run。 |
| ELK Action Worker | run_elk_action_worker | 轮询 ELK Action Index 并写入 Redis Stream。 |
| Dashboard Cache Worker | run_dashboard_cache_worker | 定期生成 Dashboard 缓存。 |
State
| State | 说明 |
|---|---|
Starting | Worker 已启动,首次轮询尚未完成。 |
Idle | 最近一次轮询成功,当前没有正在执行的 iteration。 |
Running | Worker 当前正在执行 iteration。 |
Degraded | 最近一次 Worker 轮询发生基础设施异常。 |
Down | Worker 从未上报、正常退出或心跳已过期。 |
Down 的具体原因由 reason 区分:
| Reason | 说明 |
|---|---|
never_reported | Worker 从未写入健康状态。 |
heartbeat_expired | 最近心跳超过 30 秒。 |
graceful | Worker 已正常退出。 |
单个 Playbook、Case Analysis 或 Module 的业务执行失败不会把 Worker 标记为 Degraded。请在对应业务记录和日志中检查这些失败。
页面字段
- 当前 State 和 reason。
- 当前或最近一次任务摘要。
- 当前或最近一次 iteration 耗时。
- 最近心跳时间。
- 最近轮询成功时间。
- 最近实际处理到工作的时间。
- 最近轮询失败时间。
- 不包含原始异常或 Secret 的安全错误摘要。
页面不展示 backlog、历史趋势、日志内容或累计计数器,也不提供 Restart、Stop 或 Run Now。
手动执行
Compose 已经为每类 Worker 运行一个长期进程。排查时如需手动执行一次,使用 --once:
bash
docker compose exec asp-web python manage.py run_dashboard_cache_worker --once把命令名替换为上表中的其他子命令即可。--once 不会上报 Worker Health。
不要手动启动不带 --once 的第二个长期 Worker。当前 Compose 只支持每类一个实例,同类型多实例会互相覆盖健康状态。
故障排查
Monitoring unavailable
Workers API 从 Redis 读取健康状态。Redis 不可访问时,页面显示:
text
Worker health monitoring is unavailable.先检查 Redis 和 ASP 服务状态:
bash
docker compose ps
./scripts/doctor.shDegraded 或 Down
查看对应 Compose 服务的日志,例如:
bash
docker compose logs --tail=100 asp-worker-playbook
docker compose logs -f asp-worker-dashboard-cache修复配置或运行问题后,重启对应服务。Worker 恢复轮询后,页面会在下一次自动更新时显示新状态。
功能边界
- 心跳线程每 10 秒上报一次。
- 心跳超过 30 秒时计算为
Down。 - 不自动判断
Stalled;长任务会持续显示Running和运行时长。 - Worker Health 只表达进程与轮询循环状态,不替代业务结果、容器状态和日志。
下一步
- 重启 & 运维 — 查看服务状态、日志及重启方式。
- Runtime — 配置 Dashboard Worker 刷新间隔等运行参数。
- Custom Console — 查看 Module 和 Playbook 定义。