芹菜AsyncResult - 不工作

时间:2018-04-09 13:16:46

标签: python celery celery-task

我是芹菜的新手,但对于应该简单的事情失败了:

后端和代理都配置为RabbitMQ

任务如下:

@app.task
def add(x, y):
    return x + y

测试代码:

文件1:

from tasks import add
from celery import uuid
task_id = uuid()
result = add.delay(7, 2)
task_id = result.task_id
print task_id
# output = 
         05f3f783-a538-45ed-89e3-c836a2623e8a
print result.get()
# output = 
          9

文件2:

from tasks import add
from celery.result import AsyncResult

res = AsyncResult('05f3f783-a538-45ed-89e3-c836a2623e8a')
print res.state
# output =
         pending
print ('Result =  %s' %res.get())

我的理解是文件2应该检索值成功和9。

我已经安装了花:

报告成功,结果为9。

帮助。这让我疯了。

谢谢

1 个答案:

答案 0 :(得分:0)

也许你应该read the FineManual并三思而行?

  

RPC结果后端(RabbitMQ / QPid)

     

RPC结果后端(rpc://)是特殊的,因为它实际上并不存储状态,而是发送   他们作为消息。这是一个重要的区别,因为它意味着a   结果只能检索一次,而只能由客户端检索   启动了任务。两个不同的过程不能等待相同   结果

     

(...)

     

默认情况下,消息是暂时的(非持久性),因此结果如此   如果经纪人重新启动将会消失。您可以配置结果   后端使用result_persistent发送持久性消息   设置。