Django скудный почтовый бэкэнд, замедляющий производительность - PullRequest
0 голосов
/ 13 февраля 2019

Я сейчас занимаюсь разработкой / обслуживанием локально.

Я использую django-admin для внутренних пользователей для добавления элементов.

Я добавляю в свой код сигнала.Мой сигнал post_save, и его цель - отправить электронное письмо пользователю для одобрения.Я проверяю свой сигнал с помощью console.EmailBackend

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

Я добавляю новый элемент, веб-браузер не влияет на производительность.Страница элемента моей модели перезагружается быстро.

Я обновляю свой EMAIL_BACKEND, также использую детали smpt

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

Я добавляю новый элемент, влияние на производительность огромно, мой веб-браузер теперь занимает 15-30несколько секунд, чтобы перезагрузить страницу элементов после добавления.

Есть мысли, почему производительность настолько ужасна?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Если вы планируете запускать свое приложение на AWS или аналогичном устройстве, рассмотрите возможность использования службы отправки электронной почты (например, SES AWS).Это позволит вам настроить проверку отправителя (DKIM / SPF), и это будет вызов API с малой задержкой, а не медленное взаимодействие SMTP.Если вы планируете использовать AWS, уже есть библиотека django-ses , которую вы можете настроить и сразу же начать использовать.

Если вы хотите продолжить отправлять электронные письма самостоятельно,настроить асинхронную очередь задач и работника, используя сельдерей или каналы .Эта отсрочка позволит вашему веб-работнику продолжать обслуживать запросы, в то время как работник завершает медленный процесс отправки.

Если вы хотите действительно быструю настройку, вы можете объединить два вышеупомянутых подхода, откладывая отправку электронной почты асинхронному работникукоторый затем попадает в API электронной почты как услуга.Ваш веб-работник будет работать быстро, и ваш асинхронный работник не будет заблокирован, разговаривая с SMTP-сервером в течение 10-15 секунд!

0 голосов
/ 13 февраля 2019

Реальная отправка электронной почты носит медленный характер.

Я рекомендую рекомендовать отправлять электронную почту с помощью задачи асинхронной очереди.Например, Celery - хорошая библиотека для задачи асинхронной очереди .

...