2011-06-30 12 views
5

私は、任意のサブタスクを潜在的に大量に生成する親タスクを持っています。親とサブタスクの両方が完了すると、データベースに準備ができていることを示すフラグを設定する必要があります。それをどうやるのが最善でしょうか?例えばセロリタスクとすべてのサブタスクが完了したときの検出

私はすべての準備が整ったことを示すために、関連するモデルにフラグを設定することができるようmaster_task、それがスポーンに持っているサブタスクがすべて完了したとき、私は検出する必要が
@task() 
def master_task(foo): 
    foo_obj = Foo.objects.get(id=foo) 
    for bar in foo_obj.bar_set.all(): 
     more_work.delay(bar.id) 

@task() 
def more_work(bar): 
    bar_obj = Bar.objects.get(id=bar) 
    do_work() 

>タスクセットは、一度に複数のタスクを簡単に呼び出しを可能にし、その後で結果を参加することができます:あなたは、[タスクセット] [1]使用する必要があります

答えて

4

使用chords

タスクと同じ順序が呼び出されました。
+0

「TaskSetは、Celery 3.0のグループ構成に置き換えられたため、削除されました」ということに注意してください。 – np8

2

celery.chordは、そのために正確に設計されています。

関連する問題