在Celery中通过id检索任务结果

时间:2015-06-10 09:57:29

标签: celery

我试图检查已完成任务的结果。 此作品

from proj.tasks import add
res = add.delay(3,4)
res.get()
7
res.status
'SUCCESS'
res.id
'0d4b36e3-a503-45e4-9125-cfec0a7dca30'

但我想从另一个应用程序运行它。所以我重新运行python shell并尝试:

from proj.tasks import add
res = add.AsyncResult('0d4b36e3-a503-45e4-9125-cfec0a7dca30')
res.status
'PENDING'
res.get() # Error

如何检索结果?

2 个答案:

答案 0 :(得分:35)

使用AsyncResult。 (见answer

首先创建任务:

from cel.tasks import add
res = add.delay(3,4)
res.status
'SUCCESS'
res.id
'432890aa-4f02-437d-aaca-1999b70efe8d'

然后启动另一个python shell:

from celery.result import AsyncResult
from cel.tasks import app
res = AsyncResult('432890aa-4f02-437d-aaca-1999b70efe8d',app=app)
res.state
'SUCCESS'
res.get()
7

答案 1 :(得分:1)

这是由RabbitMQ not actually storing the results引起的。如果您以后需要能够获得结果,请使用redis或SQL作为结果后端。