18

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

如何在单独的过程中发送所有电子邮件,以便用户不必等待?是否可以?

4

3 回答 3

23

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

于 2011-10-02T11:40:52.303 回答
7

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

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

于 2013-03-20T10:47:33.150 回答
6

线程可能是一个可能的解决方案。我在我的应用程序中大量使用线程来完成繁重的任务。

# 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()
于 2011-10-02T13:03:47.177 回答