2013-04-08 51 views
1
# get a list of stuff 
@celery.task 
def getList(): 
    listOfStuff = getStuff() 
    for thing in listOfStuff: 
     processThing.apply_async(args=(thing)) 


# another attempt at list of stuff 
@celery.task 
def getList(): 
    listOfStuff = getStuff() 
    for thing in listOfStuff: 
     processThing.s((thing)) 

@celery.task 
def processThing(thing): 
    pass 

因此,getList()实现都不会触发processThing任务。我无法弄清楚为什么。我猜测有一个更好的方法来完成我想要完成的任务,但我无法弄清楚那是什么。如何从Python芹菜的其他任务触发任务?

如何从其他任务启动任务?

回答

0
celery.execute.send_task("task.fqn", args=[], kwargs={}) 

这是工作产卵我的任务命令。

1

这种情况在该文档下http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks

说明这里有一个以前的线程显示了类似的情况一些代码:How to chain a Celery task that returns a list into a group?

+0

我不确定这是我想要的。编辑,对不起,我忘了输入键在这里没有按预期工作。 第二个例子看起来非常奇怪做这么简单的事情。但我相信我已经知道了我想要的东西,但没有清楚记录。 您可以查看我接受的答案,如果您认为有更好的方法,请随时分享;) – 2013-04-09 22:45:13