想象一下用户在网站上执行操作并通知管理员的情况。 想象一下,有20个管理员要通知。通过使用常规方法使用Django发送电子邮件,用户必须等到发送完所有电子邮件后才能继续。
如何在单独的流程中发送所有电子邮件,以便用户无需等待?有可能吗?
答案 0 :(得分:21)
使用celery作为任务队列,使用django-celery-email作为Django电子邮件后端,将电子邮件发送到芹菜任务。
答案 1 :(得分:6)
另一种选择是django-mailer。它将数据库中的邮件排队,然后使用cron作业发送它们。
答案 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()