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 の下のドキュメントで説明されています

同様の状況でいくつかのコードを示す前のスレッドを次に示します: How to chain a Celery task that returns a list into a group?

于 2013-04-08T19:58:11.117 に答える