2016-04-09 17 views
1

Bir çalışan zincirim var, ancak apply_async() eklediğimde yalnızca ilk görevi yürütüyor. beklendiği gibi apply_async tüm eserlerin (eşzamanlı) olmadanKereviz neden zincirdeki ilk görevi yürütüyor?

ret = chain(
    run_a.s(**kwargs), 
    run_b.s(**kwargs), 
    run_b.s(**kwargs) 
).apply_async() 
  • : Bir zincir komutla

    @task(name='run_a', delay=True) 
    def run_a(**kwargs): 
        do_whatever(kwarg['var']) 
        return 
    
    @task(name='run_b', delay=True) 
    def run_b(**kwargs): 
        # ... 
        return 
    
    @task(name='run_c', delay=True) 
    def run_c(**kwargs): 
        # ... 
        return 
    

    .

  • 'kwargs' bir hakemdir. Bir işlev *args ve **kwargs beklenmektedir çalışması için
+0

birilerini kwargs dict kullanarak alakalı teyit edebilir: beklendiği gibi

# Kwargs was filled, I added an empty args list args = [] kwargs = { 'some': 'intelligent data', } 

o ikisi ile işlevlerini işleri ararken? http://stackoverflow.com/questions/14968265/celery-task-chain-and-accessing-kwargs – GerardJP

+0

"run_b" 'ye giderken Kereviz Çalışanı günlüğünde typeError alıyorum: 'TypeError: run_b() tam olarak 0 argüman alır (Verilen 8) – GerardJP

cevap

0

Kereviz, çalıştırılmadan önce görevlerinizi doğrular iken.

ret = chain(
    run_a.s(*args, **kwargs), 
    run_b.s(*args, **kwargs), 
    run_b.s(*args, **kwargs) 
).apply_async()