2011-06-30 11 views
5

Rasgele ve potansiyel olarak büyük miktarda alt görevler oluşturacak bir üst görevim var. Hem ebeveyn hem de tüm alt görevler tamamlandıktan sonra, hazır olduğumu belirtmek için veritabanımda bir bayrak ayarlamanız gerekir. Bunu yapmayı en iyi nasıl yaparım? ÖrneğinBir kereviz görevinin ve tüm alt görevlerin ne zaman tamamlandığını algılama

:

Her şeyin hazır olduğunu belirtmek için ilgili model üzerinde bir bayrak ayarlayabilirsiniz böylece master_task ve yumurtlar sahiptir alt görevler tüm tamamladıktan sonra ben algılamak gerekir
@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() 

cevap

4

kullanın chords

Sen kullanmalıdır bir [TaskSet] [1]: > TaskSet Aynı anda birkaç görevleri kolay çağırılmasına olanak sağlar ve ardından sonuçları katılmak yapabiliyor Görevler ile aynı sipariş çağrıldı. Bunun için tam olarak tasarlanmış olan
+0

Not: "TaskSet, Celery 3.0'daki grup yapısıyla değiştirildiği için kaldırılmıştır." – np8

İlgili konular