You need to enable JavaScript to run this app. Python Celery事件监控仅触发worker-online,task-succeeded无响应
优惠活动
大模型
产品
解决方案
定价
更多

Python Celery事件监控仅触发worker-online,task-succeeded无响应

问题根因与修复步骤

核心遗漏原因

  • Celery 出于性能设计,默认关闭任务级事件的主动上报能力
    Worker 默认仅会向外广播自身生命周期类事件(比如上线、心跳、离线),不会主动推送任务执行过程中的状态变更(包括任务成功、任务失败、任务开始这类事件)。这也是当前场景下仅worker-online事件能被捕获的根本原因——这类基础元数据事件不受任务事件开关影响,会默认发送。
  • 启动Worker时未开启事件上报的命令行参数
    标准启动命令celery -A azima.main worker -l INFO没有携带事件上报开关参数,等价于禁用了任务事件推送。

可落地的修复操作

  1. 两种任选一种方式开启事件上报
    • 临时方式:启动Worker时追加-E参数,完整命令为:
      celery -A azima.main worker -l INFO -E
    • 永久配置方式:直接在main.py的Celery配置块中增加事件开关,代码如下:
      app.conf.update(
          result_expires=3600,
          worker_send_task_events=True,  # 强制开启任务事件上报
      )
      
  2. 验证流程
    完成配置调整后,按顺序重启Worker服务、重启自定义监控脚本,再提交任意一个测试任务(比如执行python -c "from azima.tasks import add; add.delay(1,2)"),即可在监控脚本输出中看到task-succeeded事件被正常触发。

补充排查点

如果开启配置后仍无法捕获任务事件,需要检查:

  • 是否真的有任务被提交到Worker执行(空跑状态下自然不会产生任务事件)
  • 监控脚本和Worker连接的Redis代理地址、库索引是否完全一致,避免事件流订阅到了错的队列
  • 是否存在网络策略拦截了Redis的事件广播消息流

内容的提问来源于stack exchange,提问作者Azima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 01:06:03