2013-04-08 49 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