Celery不返回结果

7 投票
2 回答
3092 浏览
提问于 2025-04-16 06:50

我不知道为什么,每次我在Celery中创建并运行一个新的任务时,返回结果总是有问题。第一个任务的结果返回得很好,但之后的任务结果总是显示为待处理状态。我查看了Celery的日志,里面显示结果是正确的,没有错误,但就是无法返回结果。

顺便提一下,我的后台使用的是rabbitmq。

2 个回答

1

我也遇到了同样的问题,即使我添加了'amqp'作为后端。

这是我的celery配置文件:

BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"

CELERY_RESULT_BACKEND = "amqp"
CELERY_AMQP_TASK_RESULT_EXPIRES = 18000  # 5 hours.
CELERY_IMPORTS = ("test", )

在我的命令行中,第一次调用成功了,但第二次就卡住了。过了一段时间后,如果我再调用这个方法,它又能正常工作。这个情况一直在重复。

>>> r = test.add.delay(4, 4)
>>> r.get()
8
>>> r = test.add.delay(4, 4)
>>> r.get()
^C <---------- it was hung here forever, I had to press ^C

>>> r = test.add.delay(4, 4)
>>> r.get()
8
5

结果我发现,我只需要明确指定一个后端。

添加:

CELERY_RESULT_BACKEND = "amqp"

到我的设置文件里,似乎就解决了所有问题。

撰写回答