【问题标题】:dont freeze on sending mail django不要冻结发送电子邮件 django
【发布时间】:2016-02-16 10:16:44
【问题描述】:

django 发送电子邮件时,根据 smtp 服务器的不同,需要几毫秒到几秒的时间。所以我面临的问题是当 django 开始发送电子邮件时它会冻结在那里。用户必须等到邮件发送完毕。我想知道我是否可以简单地返回 html 页面并在后台发送电子邮件而无需用户等待。

骨架是在呈现页面之前,正在发送电子邮件。所以,我想先渲染页面,然后在后台发送邮件。

【问题讨论】:

    标签: django django-email


    【解决方案1】:

    我在使用线程的项目中做过类似的事情:

    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()
    

    【讨论】:

      【解决方案2】:

      还有一个不错的项目叫做django-mailer。 它将邮件保存在您的数据库中,您可以通过 crontab 或 celery 异步发送它们。

      【讨论】:

        猜你喜欢
        • 2011-09-04
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 2014-07-08
        相关资源
        最近更新 更多