我是芹菜的新手,但对于应该简单的事情失败了:
后端和代理都配置为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。
帮助。这让我疯了。
谢谢
答案 0 :(得分:0)
也许你应该read the FineManual并三思而行?
RPC结果后端(RabbitMQ / QPid)
RPC结果后端(rpc://)是特殊的,因为它实际上并不存储状态,而是发送 他们作为消息。这是一个重要的区别,因为它意味着a 结果只能检索一次,而只能由客户端检索 启动了任务。两个不同的过程不能等待相同 结果
(...)
默认情况下,消息是暂时的(非持久性),因此结果如此 如果经纪人重新启动将会消失。您可以配置结果 后端使用result_persistent发送持久性消息 设置。