Проверьте статус работника сельдерея
У меня есть проект, который использует сельдерей. Я периодически сталкиваюсь со сценарием, когда мои запросы поступают в Celery, но задачи не передаются рабочим, а сервер просто возвращает ошибку 500.
Когда я перезагружаю Celery, он снова начинает работать. Я только предполагаю, что рабочий висит, что делает его таким, что больше нет рабочих. Если я запускаю другую партию рабочих, запросы снова начинают работать (что поддерживает мою теорию).
Вопросы:
- Я так понимаю сельдерей по умолчанию входит в stderr. Я не вижу никаких ошибок, поэтому я надеюсь, что где-то есть еще один журнал сельдерея. Где это будет?
- Есть ли способ узнать статус работников? Они есть в наличии? Они повешены?
- Может ли быть что-нибудь еще?
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 или какой-либо другой веб-сервер не работает.