Проверьте статус работника сельдерея

У меня есть проект, который использует сельдерей. Я периодически сталкиваюсь со сценарием, когда мои запросы поступают в Celery, но задачи не передаются рабочим, а сервер просто возвращает ошибку 500.

Когда я перезагружаю Celery, он снова начинает работать. Я только предполагаю, что рабочий висит, что делает его таким, что больше нет рабочих. Если я запускаю другую партию рабочих, запросы снова начинают работать (что поддерживает мою теорию).

Вопросы:

  1. Я так понимаю сельдерей по умолчанию входит в stderr. Я не вижу никаких ошибок, поэтому я надеюсь, что где-то есть еще один журнал сельдерея. Где это будет?
  2. Есть ли способ узнать статус работников? Они есть в наличии? Они повешены?
  3. Может ли быть что-нибудь еще?

5 ответов

Решение

Вы можете увидеть активных работников, использующих API цветов или напрямую запрашивая сельдерей, используя следующую процедуру:

from celery import Celery
celery = Celery('vwadaptor',
                broker='redis://workerdb:6379/0',backend='redis://workerdb:6379/0')
celery.control.inspect().active()

Показывает вам активных работников и их в настоящее время выполняемых работ.

Чтобы получить быстрый статус ваших работников, вы можете запустить эту команду:

celery -A project inspect stats

он выведет массив JSON со статистикой о ваших воркерах.

Подробнее см. В документации.

Вы можете установить цветок:

pip install flower

У него есть API, который можно использовать для запроса статуса рабочих и выполняемых на них задач.

запустите эту команду в своем терминале

      celery -A yourproject.app  status

для большей команды

      celery -A yourproject.app --help

Я так понимаю сельдерей по умолчанию логирует в stderr. Я не вижу ошибок, поэтому надеюсь, что где-то есть еще один журнал сельдерея. Где бы это было?

Регистратор сельдерея запишет в указанный вами файл --logfile=/path/to/file.log. Если вы его не указали, он, как вы говорите, перейдет в stderr.

Есть ли способ узнать статус работников? Они есть в наличии? Они повешены?

Да, все это описано в Руководстве по мониторингу и управлению документации Celery.

celery -A yourproject.app inspect status придаст статус вашим работникам. celery -A yourproject.app inspect active предоставит вам список текущих задач и т. д.

Может быть что-нибудь еще?

Celery не возвращает 500 ошибок. Что вы имеете в виду? Возможно, цветок сельдерея? - Celery не является веб-сервером... Так что вполне возможно, что ваш кластер Celery работает нормально, но вас смущает то, что Celery Flower или какой-либо другой веб-сервер не работает.

Другие вопросы по тегам