В моем проекте Django я использую Celery и Rabbitmq для запуска задач в фоновом режиме. Я использую планировщик бильярда, чтобы выполнять периодические задания. Как я могу проверить, работает ли цикл сельдерея, программно?Проверьте, работает ли цикл измельчения сельдерея
ответ
Вы можете проверить планировщик работает или нет с помощью следующей команды
python manage.py celery worker --beat
Вы используете выскочка или что-то или руководство было еще запустить сельдерей рабочего + сельдерей бить в качестве фоновых задач? В производстве вы должны использовать один из них для того, чтобы работать с сельдереем, а также с сельдереем в фоновом режиме.
Простой способ проверки битума сельдерея: ps aux | grep -i '[c]elerybeat'
. Если вы получаете текстовую строку с pid
, она работает. Также вы можете сделать вывод этой команды более симпатичным: ps aux | grep -i '[c]elerybeat' | awk '{print $2}'
. Если вы получите номер - он работает, если вы ничего не получите - он не работает.
Также вы можете проверить статус работников сельдерей: celery -A projectname status
.
Если вы заинтересованы в улучшенном мониторинге сельдерея, вы можете прочитать официальную документацию monitoring руководство.
Это не программно, хотя – guival
Если вы daemonized сельдерей после урока из celery doc, проверяя, если он работает или не может быть сделано через
sudo /etc/init.d/celeryd status
sudo /etc/init.d/celerybeat status
Вы можете использовать возвращение таких команд в модуле питона.
Возможно, вы найдете, что искали supervisor. Он предоставляет celerybeat conf, который записывает все, что связано с биением в /var/log/celery/beat.log
.
Другой способ сделать это - использовать Flower. Вы можете настроить его для своего сервера (убедитесь, что его пароль защищен), несколько легче заметить в графическом интерфейсе задачи, которые находятся в очереди, и какое время они поставлены в очередь, таким образом проверяя, работает ли ваш бит.
Почему вы хотите это сделать? Вы хотите проверить перед отправкой задания? –
Одна из причин заключалась бы в том, чтобы начать переход на другой ресурс, если celerybeat не работал. Кажется, что это не приемлемый способ добиться этого. –
Если это так, то лучше использовать 'supervisord' или что-то в этом роде. – trinchet