2013-09-05 7 views
5

Używam selera i chcę wysłać zadanie transmisji do kilku pracowników. Staram się robić to jak jest opisane na http://docs.celeryproject.org/en/latest/userguide/routing.html#broadcast więc stworzyć prostą aplikację z zadania:Wiadomości rozgłoszeniowe w selerze

@celery.task 
def do_something(value): 
    print value 

iw aplikacji zrobiłem:

from kombu.common import Broadcast 
CELERY_QUEUES = (Broadcast('broadcast_tasks'),) 
CELERY_ROUTES = {'my_app.do_something': {'queue': 'broadcast_tasks'}} 

a potem starałem się wysłać zadanie do pracowników z:

my_app.do_something.apply_async(['222'], queue='broadcast_tasks') 

czyli

my_app.do_something.apply_async(['222']) 

, ale niestety w pierwszym zadaniu zadanie jest wysyłane "normalnie" tylko jednemu pracownikowi w jednym czasie - tak więc jeśli mam dwóch pracowników niż zadanie jest wykonywane raz lub pierwszy i raz na drugi pracownik. Po drugie, nie wiem, gdzie jest wykonywane to zadanie, ponieważ na jakimkolwiek pracowniku nie ma żadnego rezultatu. Może ktoś z Was będzie wiedział, dlaczego to nie działa jak transmisja i co robię źle tutaj. Z góry dziękuję za pomoc.

Odpowiedz

Powiązane problemy