2012-02-06 12 views
15

Czy można ustawić współbieżność (liczbę równoczesnych pracowników) na poziomie zadania w postaci Celery? Szukam czegoś bardziej drobnoziarnistego niż CELERYD_CONCURRENCY (który ustawia współbieżność dla całego daemona).Seler: na limity współbieżności zadań (liczba pracowników na zadanie)?

Scenariusz użycia: Mam jeden celerlyd wykonujący różne typy zadań o bardzo różnych charakterystykach wydajnościowych - niektóre są szybkie, niektóre bardzo powolne. Dla niektórych chciałbym zrobić tak wiele, jak tylko mogę, tak szybko, jak tylko mogę, dla innych chciałbym upewnić się, że tylko jedna instancja działa w dowolnym momencie (np. Współbieżność 1).

Odpowiedz

25

Możesz użyć automatic routing do kierowania zadań do różnych kolejek, które będą przetwarzane przez pracowników selerów o różnych poziomach współbieżności.

celeryd-wielo początek szybki powolny -c: powolny 3 -c: Fast 5

Polecenie to uruchamia 2 pracowników seler słuchania szybki i powolne kolejki z 3 i 5 poziomów odpowiednio współbieżności .

CELERY_ROUTES = { "tasks.a": { "kolejka": "wolno"}, "tasks.b": { "kolejka": "szybko"}}

Zadania z typem tasks.a będą przetwarzane przez powolne zadań kolejki i tasks.b przez odpowiednio szybkiej kolejki.

+1

Dzięki 0x00mh. Dzięki temu mogę definiować współbieżność w kolejkach, ale nie w zadaniach. I wierzę, że to oznacza, że ​​rozpoczynam wiele demonów selera. Sądzę więc, że to oznacza, że ​​nie ma możliwości ustawienia współbieżności na zadanie bez użycia osobnego demona? – Parand

+0

CELERYD_CONCURRENCY określa, ile procesów (procesów roboczych) ma zostać uruchomionych. Procesy robocze pobierają komunikaty od brokera niezależnie. Wiadomość zawiera nazwę zadania do wykonania. – mher

Powiązane problemy