Джанго-уведомление. Как я могу использовать потоковую отправку электронной почты?

В моем приложении 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 устарели. Сельдерей делает совершенно разные вещи и может использоваться с любой библиотекой, которую вы можете себе представить.

Единственное изменение - аргументы задачи должны быть выбираемыми. Это означает, что вы должны передавать идентификаторы базы данных, а не целые объекты и т. Д.

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