Chciałbym wykorzystać Celery'ego (z RabbitMQ jako backend MQ) do wykonywania zadań o różnych smakach za pośrednictwem różnych Kolejek. Jednym z wymogów jest to, że konsumpcja (przez pracowników) z określonej kolejki powinna umożliwiać jej wstrzymanie i wznowienie.Pracownik nie zajmuje się zadaniami po selerze numer jeden nazywa się
Seler, wydaje się mieć this capability poprzez wywołanie add_consumer
i cancel_consumer
. Chociaż mogłem anulować zużycie zadań z kolejki dla konkretnego pracownika, nie mogę zmusić pracownika do wznowienia zużycia przez wywołanie add_consumer
. The code to reproduce this issue is provided here. Przypuszczam, że brakuje mi jakiegoś parametru, który powinien być dostarczony w celeryconfig
lub za pomocą argumentów przy rozpoczynaniu pracy?
Byłoby wspaniale, aby uzyskać świeże pary oczu na ten temat. Nie ma zbyt wielu dyskusji na temat Stackoverflow dotyczących add_consumer ani Github. Mam więc nadzieję, że jest tu kilku ekspertów gotowych podzielić się swoimi przemyśleniami/doświadczeniem.
-
Używam poniżej:
system operacyjny Windows, RabbitMQ 3.5.6, Erlang 18,1, Python 3.3.5, seler 3.1.15
Dzięki za próbę. Istotą wielu plików, które zapewniłem do odtworzenia tego zachowania, jest użycie add_consumer. Podczas gdy pracownik potwierdza wykonanie polecenia add_consumer, nie wznawia konsumpcji zadań w kolejce. Podejrzewam, że mój celeryconfig nie jest prawidłowo ustawiony lub istnieje potencjalny błąd w selerze. – teng
@teng Czy próbowałeś z 'queue = high' podczas dodawania konsumenta? Użyłem twojego sedna i powtórzyłem zachowanie. Po przejściu odpowiednich parametrów działa poprawnie. – ChillarAnand
Dodałem 'queue = high' jako kwarg do add_consumer, przeciwstawiając się tylko arg, a po wykonaniu resume.py, pracownik nadal nie wykonuje zadań. Czy mógłbyś powiedzieć mi, jaki jest twój system operacyjny i wersje rabbitmq i selera, których używasz? – teng