当django发送电子邮件时,根据smtp服务器的不同,需要几毫秒到几秒钟。所以我面临的问题是,当django开始发送电子邮件时,它会冻结在那里。用户必须等到邮件发送完毕。我想知道我是否可以简单地返回html页面,并且在后台可以发送电子邮件而不会让用户等待它。
骨架就是在呈现页面之前,正在发送电子邮件。所以,我想首先渲染页面,然后在后台发送电子邮件。
答案 0 :(得分:3)
我在使用线程的项目中做过类似的事情:
class EmailThread(Thread):
def __init__(self, myemail):
self.myemail = myemail
Thread.__init__(self)
def run(self):
self.myemail.send()
class MyEmailMessage(EmailMessage):
def send_async(self, fail_silently=False):
thread = EmailThread(self)
thread.start()
# send email
email = MyEmailMessage(...)
email.send_async()
答案 1 :(得分:0)
还有一个名为django-mailer的好项目。 它将邮件保存在您的数据库中,并通过crontab或celery异步发送。