2012-08-01 13 views
6

Prowadzimy Seler za Inspektora i uruchomić go zCzy liczba procesów selerowanych zależy od ustawienia --concurrency?

celeryd --events --loglevel=INFO --concurrency=2 

to jednak tworzy wykres proces, który jest głęboko maksymalnie trzy warstwy i zawiera aż 7 procesów celeryd (Promotor ikra jeden celeryd, który spawns kilka inne, które ponownie odradzają procesy). Nasza maszyna ma dwa rdzenie procesora.

Czy wszystkie te procesy działają na zadania? Czy może niektóre z nich są po prostu pulami pracowników? W jaki sposób ustawienie --concurrency jest powiązane z liczbą rzeczywiście zainferowanych procesów?

Odpowiedz

4

Nie powinien mieć 7 procesy jeśli --concurrency to 2.

Rzeczywiste procesy uruchomione jest:

  • Główny proces konsument

    Delegaci pracować do puli pracowników

  • Pula pracownicza (jest to liczba określona jako --concurrency)

A więc jest to 3 procesy o współbieżności dwóch.

Ponadto bardzo lekki proces stosowany do czyszczenia semaforów rozpoczyna jeśli force_execv jest włączona (która jest domyślnie i używasz innego transportu niż REDiS lub RabbitMQ).

UWAGA: w niektórych przypadkach wykazy procesów zawierają również wątki. Pracownik może uruchomić kilka wątków, jeśli używają transportu innego niż rabbitmq/redis, , w tym jeden wątek mediatora, który jest zawsze uruchamiany, chyba że włączone jest CELERY_DISABLE_RATE_LIMITS.

+0

To nie pasuje do mojego doświadczenia. Mam '--concurrency = 1 --beat', ale 4 procesy selera są odradzane. – Cerin

+0

Używam 'DatabaseTransport' i Seler 3.0, a przy' --concurrencry = 1' otrzymuję 6 procesów, podobnie jak w przypadku OP. –

+0

@asksol Doświadczam również 4 selera selera, gdy --concurrency = 1 i dwóch pracowników. Jestem ciekaw, dlaczego tak jest, wielkie dzięki. – fpghost