Джанго-уведомление. Как я могу использовать потоковую отправку электронной почты?
В моем приложении Django я использую django-notification
отправлять уведомления. Однако я заметил, что в некоторых случаях (при отправке нескольких уведомлений) мое веб-приложение дает отложенные ответы. Хотя я отправляю уведомления через запросы Ajax, я все же думаю, что было бы лучше, если бы я мог реализовать mailtools
библиотека, предоставляющая многопоточные электронные письма.
Кто-нибудь реализовывал такую вещь? Это легко? Как я могу использовать ThreadedMailer
от mailtools
в django-notification
?
или есть другая альтернатива?
1 ответ
Используйте сельдерей для этой цели. Это легко настроить с помощью django, и вы можете использовать код, который вы используете прямо сейчас.
Запрос Ajax помещает письмо в очередь задач и возвращает его. Вы можете вернуть идентификатор задачи, если позже захотите проверить, успешно ли она выполнена.
Обновить:
Сельдерей только позволяет вам вызывать свои функции в фоновом режиме. Скажем, в виде ajax вы звонили:
send_email(…)
Сейчас в tasks.py
Вы должны определить функцию:
@task
def send_email(…)
И в представлении вы будете называть это по:
send_email.delay(…)
И это все. Письмо будет отправлено фоновым работником Деймоном с использованием вашего существующего кода Python.
Это не делает django-notification
устарели. Сельдерей делает совершенно разные вещи и может использоваться с любой библиотекой, которую вы можете себе представить.
Единственное изменение - аргументы задачи должны быть выбираемыми. Это означает, что вы должны передавать идентификаторы базы данных, а не целые объекты и т. Д.