Celery不返回结果
我不知道为什么,每次我在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"
到我的设置文件里,似乎就解决了所有问题。