Как настроить Celery для отправки оповещений по электронной почте при сбое задач?

Как можно настроить сельдерей для отправки оповещений по электронной почте при сбое задач?

Например, я хочу, чтобы Celery уведомлял меня, когда более 3 задач терпят неудачу или повторяется более 10 задач.

Возможно ли использовать сельдерей или утилиту (например, цветок), или мне нужно написать свой собственный плагин?


person Ali    schedule 07.07.2014    source источник


Ответы (2)


Да, все, что вам нужно сделать, это установить CELERY_SEND_TASK_ERROR_EMAILS = True и если процесс Celery завершится ошибкой, django отправит сообщение с трассировкой на все электронные письма, установленные в настройках ADMINS.

person daniula    schedule 07.07.2014
comment
Да, спасибо. но у него есть проблема, что он отправляет электронное письмо для каждой неудачной задачи. - person Ali; 08.07.2014
comment
Кроме того, это не имеет ничего общего с Django, оно будет работать, даже если вы не используете Celery с Django, если есть все правильные записи конфигурации. - person Maiku Mori; 10.07.2014
comment
Вопрос касался получения предупреждений при достижении порога неудачных или повторных задач, а не отправки электронного письма для каждой задачи (могут быть тысячи). См. этот ответ, чтобы получить список неудачных задачи, из которых вы можете рассчитать статистику для отправки оповещения. - person RichVel; 30.09.2015
comment
Доступна ли эта опция для celery 4.x? Я не мог найти такой. - person saiyan; 14.01.2019

Насколько я знаю, из коробки это невозможно.

Вы можете написать собственный клиент поверх сельдерея или цветка или получить прямой доступ к RabbitMQ.

Что бы я сделал (и я делаю), так это просто регистрирую неудачные задачи, а затем использую что-то вроде Graylog2 для мониторинга файлов журнала. , это работает для всей вашей инфраструктуры, а не только для Celery.

Вы также можете использовать нечто вроде NewRelic, которое напрямую отслеживает ваши процессы и предлагает множество других функций. Хотя отправка отчетов по электронной почте об исключениях в NewRelic несколько ограничена.

Простой клиент/монитор, вероятно, является самым быстрым решением.

person Maiku Mori    schedule 07.07.2014
comment
Так почему голосование против? Прочитайте вопрос, очевидный ответ заключается в том, что вы не можете сделать это из коробки. Ты можешь делать то, что сказала @daniula, но это не серьезно. Если что-то пойдет не так, в вашем почтовом ящике окажется 10 000 писем. - person Maiku Mori; 10.07.2014
comment
Этот минус - моя ошибка. Ваше решение в порядке, я не заметил, что сообщение должно быть отправлено после сбоя X, а не каждый сбой. Я могу изменить свой голос только тогда, когда ваш ответ будет отредактирован. - person daniula; 10.07.2014