Python/Django:在后台发送电子邮件

hyrbngr7  于 2023-06-25  发布在  Go
关注(0)|答案(3)|浏览(137)

想象一下这样一种情况:用户在网站上执行操作,管理员收到通知。假设有20个管理员要通知。通过使用Django发送电子邮件的正常方法,用户将不得不等待,直到所有的电子邮件都被发送,然后才能继续。
如何在一个单独的进程中发送所有电子邮件,以便用户不必等待?这可能吗?

vtwuwzda

vtwuwzda1#

使用celery作为任务队列,django-celery-email是一个Django电子邮件后端,它将电子邮件发送到celery任务。

zxlwwiss

zxlwwiss2#

另一个选择是django-mailer。它将邮件在数据库表中排队,然后使用cron作业发送它们。
https://github.com/pinax/django-mailer

ki0zmccv

ki0zmccv3#

如果我们谈论的是一次只发送20封邮件,线程可能是一个可能的解决方案。对于昂贵的后台任务,使用Celery。
这是一个使用线程的示例:

# 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()

相关问题