当我尝试使用Celery
文档add
方法中的示例subtask
时,我无法获得最终结果。
@task
def add(x, y, callback=None):
result = x + y
if callback:
subtask(callback).delay(result)
return result
当我用;
调用任务时>>> subadd = add.subtask(args=(5, ))
>>> r=add.apply_async(args=(1, 2,subadd))
>>> r.result
3
如图所示,它返回3
而不是8
。
当我运行这些部件时,工人有一个错误。我不知道为什么会这样。
[2013-06-27 07:49:18,080: ERROR/MainProcess] Received unregistered task of type 'devicemanagement.celery_task.add'.
如何从结果中获得8?
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
在> 3.0芹菜中,连锁是另一个很酷的选择:
from celery import chain
r = chain(add.s(1, 2), add.s(5))()
#or using '|' operator
r = (add.s(1, 2) | add.s(1))()
r.result