想象一下用户在网站上执行操作并通知管理员的情况。假设有 20 个管理员需要通知。通过使用 Django 发送电子邮件的常规方法,用户必须等到所有电子邮件都发送完毕后才能继续。
如何在单独的过程中发送所有电子邮件,以便用户不必等待?是否可以?
想象一下用户在网站上执行操作并通知管理员的情况。假设有 20 个管理员需要通知。通过使用 Django 发送电子邮件的常规方法,用户必须等到所有电子邮件都发送完毕后才能继续。
如何在单独的过程中发送所有电子邮件,以便用户不必等待?是否可以?
使用celery作为任务队列和django-celery-email,它是一个 Django 电子邮件后端,将电子邮件发送到 celery 任务。
另一种选择是 django-mailer。它将邮件在数据库表中排队,然后您使用 cron 作业发送它们。
线程可能是一个可能的解决方案。我在我的应用程序中大量使用线程来完成繁重的任务。
# 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()