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

时间:2011-10-02 11:30:27

标签: python django django-email

想象一下用户在网站上执行操作并通知管理员的情况。 想象一下,有20个管理员要通知。通过使用常规方法使用Django发送电子邮件,用户必须等到发送完所有电子邮件后才能继续。

如何在单独的流程中发送所有电子邮件,以便用户无需等待?有可能吗?

3 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:6)

另一种选择是django-mailer。它将数据库中的邮件排队,然后使用cron作业发送它们。

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

答案 2 :(得分: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()