远程工作者“ PENDING”的芹菜任务状态,但实际上是“成功”

时间:2020-08-09 21:02:34

标签: python celery

我在不同的服务器上有2个芹菜工人。 我的第一个服务器配置是:

CELERY_BROKER_URL = env.str("CELERY_URL") # amqp://<user>:<password>@host/db
CELERY_RESULT_BACKEND = env.str("RESULTS_URL") # redis://<user>:<password>@<host>
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
CELERY_IGNORE_RESULT = False

CELERY_TASK_TRACK_STARTED = True
# I've also tried CELERY_TASK_STARTED

我的第二个服务器配置是

broker = "amqp://<user>:<password>@host/db" # same as 1st
result_backend = "redis://<user>:<password>@<host>" # same as 1st
task_track_started = True
# I've also tried task_started

我在第二台服务器上还有一个任务

@app.task(name='Test_task')
def test_task():
    return 'Done!'

我正在使用task = app.send_task('Test_task', queue='test_queue')从第一台服务器调用此任务
所以
我的麻烦是,当我试图获取此任务状态或导致结果始终相同时

>>> task.state
'PENDING'
>>> print(task.result)
None

但是,如果我在花中检查此任务,其状态为成功,其结果为完成! Flower Table Screenshot

我也尝试使用rpc://作为result_backend,但结果仍然相同。

我的第一位芹菜工人正在Pop!_OS 20.04 LTS x86_64
上运行 我的第二个芹菜工人正在Ubuntu 20.04 LTS aarch64上运行

1 个答案:

答案 0 :(得分:0)

好,我太专心了
我必须在第二个配置中使用backend而不是result_backend