出于某种原因,每当我在 Celery 中创建和运行新任务时,返回结果都会出现问题。第一个任务完美返回,但对于所有后续任务,结果始终处于挂起状态。我检查了 Celery 日志,它得到了正确的结果,没有错误,但它无法返回它。
如果有帮助,我正在运行 rabbitmq 作为我的后端。
好吧,事实证明我只需要明确指定一个后端。
添加:
CELERY_RESULT_BACKEND = "amqp"
我的设置文件似乎可以解决所有问题。
即使我添加了“amqp”后端,我也会遇到同样的问题。
这是我的芹菜配置文件:
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