You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Celery Beat调度任务成功但未实际执行问题排查求助

核心问题1:任务名称配置不匹配

你在Celery Beat调度配置中填写的任务名和实际注册的任务名不一致:

  • 配置中写的是 tasks.get_daily_subscribed_user、tasks.get_weekly_subscribed_user、tasks.get_monthly_subscribed_user(名词为单数,无末尾s)
  • 实际通过@celery.task注册的任务名是 get_daily_subscribed_users、get_weekly_subscribed_users、get_monthly_subscribed_users(名词为复数,带末尾s)

Beat发出的任务名在Worker中找不到对应的执行函数,自然不会触发任务运行。首先把配置文件beat_schedule里的三个task字段值都改成带s的正确名称。

核心问题2:未启动Celery Worker进程

Celery Beat仅负责按照定时规则将任务推送到Broker(你这里用的是AWS SQS)队列中,本身不执行任务逻辑,实际处理任务的是Celery Worker进程。你需要额外启动Worker:

celery -A tasks worker -l INFO

Beat和Worker两个进程需要同时运行,定时任务才能正常执行。


其他排查思路

如果修正上述问题后仍然无法运行,按以下步骤排查:

  • 检查AWS SQS状态:登录AWS控制台查看对应SQS队列的消息堆积情况,如果队列中有未消费的消息,说明问题出在Worker消费环节;如果队列中没有消息,说明Beat推送消息到Broker失败,需检查SQS密钥权限、连接配置是否正确,确认你使用的AWS账号有SQS的发送、接收、删除消息权限。
  • 查看Worker运行日志:启动Worker后留意日志输出,排查是否存在依赖导入失败、任务执行报错(比如生成Excel的目标目录无写入权限、数据库查询失败等)。
  • 手动触发任务验证:直接在Python shell中导入任务,执行 get_daily_subscribed_users.delay(),测试任务本身逻辑是否正常,是否可以正常返回结果。
  • 检查版本兼容性:如果服务之前运行正常,排查近期是否升级过Celery、kombu、boto3等相关依赖,版本不兼容也会导致消息收发异常。

内容的提问来源于stack exchange,提问作者Of Course I Still Love You

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:03