4
# 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 任务。我不知道为什么。我猜有更好的方法来完成我想要完成的事情,但我不知道那是什么。

如何从另一个任务中启动任务?

4

2 回答 2

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

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

于 2013-04-09T22:48:23.720 回答
1

这种情况在http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks下的文档中进行了解释

这是以前的线程,显示了类似情况下的一些代码:如何将返回列表的 Celery 任务链接到组中?

于 2013-04-08T19:58:11.117 回答