Подтвердить что ты не робот

Python/Django: отправка писем в фоновом режиме

Представьте себе ситуацию, когда пользователь выполняет действие на веб-сайте и администраторы уведомляются. Представьте, есть 20 администраторов для уведомления. Используя обычные методы отправки электронной почты с помощью Django, пользователю придется ждать, пока все электронные письма не будут отправлены, прежде чем сможете продолжить.

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

4b9b3361

Ответ 1

Используйте celery в качестве очереди задач и django-celery-email, который является почтовым сервером Django, который отправляет отправку электронной почты в задачу сельдерея.

Ответ 2

Другой вариант - django-mailer. Он ставит в очередь почту в таблице базы данных, а затем вы используете задание cron для отправки.

https://github.com/pinax/django-mailer

Ответ 3

Нить может быть возможным решением. Я интенсивно использую потоки в своем приложении для задач haevy.

# This Python file uses the following encoding: utf-8

#threading
from threading import Thread

...

class afegeixThread(Thread):

    def __init__ (self,usuari, parameter=None):
        Thread.__init__(self)
        self.parameter = parameter
        ...

    def run(self):        
        errors = []
        try:
             if self.paramenter:
                   ....
        except Exception, e:                
             ...
...

n = afegeixThread( 'p1' )
n.start()