2014-09-11 32 views
5
  1. Nie wiem, czy jest to a bug lub problem z konfiguracją.
  2. Cel: debug/modyfikować zadania Celery bez ręcznego ponownego uruchamiania pracownika za każdym razem, kiedy dokonać małej zmiany

Więc mam skonfigurowany Seler + RabbitMQ. Wszystko działa poprawnie.Selery nie działa z RabbitMQ z opcją "--autoreload"

Dodany --autoreload opcja polecenia celery -A proj worker --loglevel=debug i rejestrowania zatrzymuje się na to:

[2014-09-11 19:22:00,447: DEBUG/MainProcess] | Worker: Hub.register Autoreloader... 

Bez niej:

[2014-09-11 19:37:34,316: DEBUG/MainProcess] | Worker: Hub.register Pool... 
[2014-09-11 19:37:34,317: DEBUG/MainProcess] basic.qos: prefetch_count->16 
[2014-09-11 19:37:36,275: DEBUG/MainProcess] pidbox received method enable_events() [reply_to:None ticket:None] 
[2014-09-11 19:37:36,275: INFO/MainProcess] Events of group {task} enabled by remote. 

Wszystko inne działa dobrze. RabbitMQ otrzymuje wiadomość po

Istnieją połączenia z Seler. Po prostu nie mówi on Selerowi, aby rozpoczął zadanie.

Wygląda na problem z połączeniem, ale nie wiem, co to jest.
Jeśli możesz w tym pomóc, napisz.

Odpowiedz

1

Jest to błąd w seler seler na linii/pracownika/autoreload.py 67

bug fix to zostało popełnione do opanowania: https://github.com/pashinin/celery/commit/92b52db6eeeb75494700ffe807ecd4c1fe6b0643

można załatać bibliotekę zmieniając linię 67 autoreload. py z

for chunk in iter(lambda: f.read(2 ** 20), ''): 

do

for chunk in iter(lambda: f.read(2 ** 20), b''): 

Af W tej zmianie możesz napotkać jeszcze jeden problem: Jeśli masz już utworzone jedno zadanie, NIE zostanie ono ponownie utworzone i to zadanie nie zostanie zaktualizowane po przeładowaniu modułu. Ponownie załadowane zadania stają się aktywne dopiero po wykonaniu ich jeszcze raz.

Programiści zajmujący się selerami wydają się nie być gotowi rozwiązać tego problemu na wczesnym etapie. Do tego czasu masz dwie opcje:

  1. Zaktualizowane zadanie musi zostać wykonane przed odebraniem nowego.

  2. Uruchom pracownika selera po zadaniem jest aktualizowany