Обработка ошибок и ведение журнала с помощью электронных писем сельдерея

Я пытался понять, как можно выполнить поток обработки ошибок и ведения журнала при использовании Django-anymail (с настраиваемым ESP, таким как Sendgrid / Mailgun / Postmark) и django-celery. Например, у меня есть представление, которое запускает задачу с apply_async, которая отправляет пакет писем через Postmark. На этом этапе может произойти несколько вещей:

  1. Запрос был каким-то образом недействителен, и Postmark возвращает ответ об ошибке, который вызывает исключение anymail или что-то подобное, как описано в https://anymail.readthedocs.io/en/v8.1/sending/exceptions/ . Состояние задачи хранится в моем бэкэнде результатов django, но данных не так много. Я хотел бы иметь возможность посмотреть на исключение и, возможно, сделать что-то на его основе, как и где мне это сделать с сельдереем? Похоже, что сельдерей действительно выводит ответ / исключение в консоль, я просто не уверен, где мне его обрабатывать. Еще одна задача в цепочке?

  2. Запрос успешно отправлен с помощью anymail и возвращает 200-ответ. Как получить ответ и где его обработать? Postmark вернет 200, даже если отдельные сообщения в пакете не работают, поэтому мне нужен способ проверить сообщения.

  3. Postmark и anymail предоставляют возможность проверки статуса для пакетных рассылок, я не уверен, где и когда это должно быть сделано после отправки сообщения в задаче. Внутри другой задачи, например периодической?

Документы anymail (https://anymail.readthedocs.io/en/v8.1/tips/transient_errors/) говорят об обработке временных ошибок почти так, как если бы это было тривиально, но я действительно не понимаю, как это сделать. создание надежной системы журналирования, чтобы я мог действовать в случае серьезных сбоев (например, отправка мне писем во время простоев внешних API, ограничений). Если у вас есть опыт работы с celery + anymail или какой-либо другой серверной частью рассылки, пожалуйста, оставьте отзыв.

0 ответов

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