来自远程工作人员的 Celery 任务状态 'PENDING' 但实际上它是 'SUCCESS'
Celery task state from remote worker 'PENDING' but in fact it's 'SUCCESS'
我在不同的服务器上有 2 个 celery worker。
我的第一个服务器配置是:
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 中检查这个任务,它的状态是 SUCCESS,结果是 Done!
我也试过使用 rpc://
作为 result_backend 但结果还是一样。
我的第一个 Celery worker 是 运行 Pop!_OS 20.04 LTS x86_64
我的第二个芹菜工人是 运行 Ubuntu 20.04 LTS aarch64
好吧,我太不留神了
我必须在第二个配置
中使用 backend
而不是 result_backend
我在不同的服务器上有 2 个 celery worker。 我的第一个服务器配置是:
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 中检查这个任务,它的状态是 SUCCESS,结果是 Done!
我也试过使用 rpc://
作为 result_backend 但结果还是一样。
我的第一个 Celery worker 是 运行 Pop!_OS 20.04 LTS x86_64
我的第二个芹菜工人是 运行 Ubuntu 20.04 LTS aarch64
好吧,我太不留神了
我必须在第二个配置
backend
而不是 result_backend