如何从Python Celery中的其他任务触发任务?

时间:2013-04-08 19:15:27

标签: python celery

# 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任务。我无法弄清楚原因。我猜测有一种更好的方法来完成我想要完成的事情,但我无法弄清楚那是什么。

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

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

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

这是产生我的任务的命令。