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

Celery任务持续处于PENDING状态,请求故障排查

Celery任务一直处于PENDING状态的原因分析

1. Worker启动的应用入口错误

你启动Worker时使用的命令是:

celery -A tasks worker --loglevel=DEBUG

但你的Celery实例app定义在celery_app.py中,-A参数需要指定包含Celery应用实例的模块,正确的启动命令应该是:

celery -A celery_app worker --loglevel=DEBUG

错误的入口会导致Worker无法正确识别任务队列,进而无法接收和处理任务。

2. 任务调用代码位置错误

你在tasks.py中直接编写了任务调用代码:

result = add.delay(2, 5)
print(result.status)
result.get()

当Worker加载tasks模块时,这段代码会自动执行并发送任务。如果此时Worker还未完全启动,或者Worker没有监听对应的队列,任务就会一直处于PENDING状态。

正确的做法是将任务调用代码拆分到单独的脚本中,比如新建run_task.py:

from tasks import add

result = add.delay(2, 5)
print(result.status)
print(result.get())

先启动Worker,再运行这个脚本发送任务。

3. 潜在的队列配置或Redis连接验证点

虽然你提到Redis中生成了新键,但仍需确认:

  • Celery的broker和backend配置的数据库编号(0和1)是否正确,Worker是否连接到了同一个Redis数据库
  • 如果后续将Worker部署到Docker容器中,需要将Celery配置中的localhost替换为Docker Compose中的服务名redis,否则容器内无法访问本地Redis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:37:46