2011-06-27 15 views
7

Rozpoczęłam pracę z firmą Celery nad projektem Django. Dla celów rozwoju lokalnego skonfigurowałem go z djcelery i djkombu (transport baz danych), zgodnie z tymi instrukcjami, ale planuję używać rabbitmq na serwerze produkcyjnym.Jak zdiagnozować pracowników selera, którzy wiszą

Odkryłem, że to działa, ale jeden lub więcej pracowników zostanie zawieszonych losowo. Pracownicy trzymają się różnych zadań, więc nie jest tak, że jedno konkretne zadanie wchodzi w nieskończoną pętlę. Kiedy próbuję zamknąć seler, w dzienniku zwykle widzę wszystkich pracowników wychodzących, z wyjątkiem jednego. Zarówno przed, jak i po zawieszeniu się pracownika, próbowałem użyć celeryctl, aby uzyskać informacje o pracownikach, ale celeryctl zawsze kończy się niepowodzeniem z komunikatem "Błąd: Żadne węzły nie odpowiedziały w ramach ograniczenia czasowego: ". Próbowałem również sprawdzić pracowników http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers, ale wszystkie metody nic nie zwracają.

Wszelkie pomysły dotyczące diagnozowania przyczyn zawieszenia pracownika lub są pomocne.

+0

najpierw uruchomić seler na powłoki z poziomu debugowania celeryd -l debugowania. Po ponownym uruchomieniu selera lub zatrzymaniu go, Poolworker, który wykonuje zadanie, nie jest ponownie uruchamiany, dopóki zadanie nie zostanie zakończone, jest to normalne zachowanie. Oczywiście nie jest normalne, że twoje zadania są blokowane losowo. To nigdy mi się nie przydarzyło z Rabbit MQ, Może być możliwe, że jest coś związanego z blokadą db lub połączeniem .. Używasz InnoDB MYSQL? Aniway Silnie sugeruję brokera zamiast db transportu –

+0

Jakiej wersji używasz? – asksol

Odpowiedz

1

Miałem ten sam problem. Myślę, że to dlatego, że używasz ghettoq, która nie obsługuje zdarzeń.

według zapytać:

remote control commands (broadcast) and events does not work with ghettoq.