码迷,mamicode.com
首页 > 其他好文 > 详细

Flask-mail 发邮件慢(即使异步)

时间:2019-02-08 13:05:33      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:异步   htm   current   with   sage   rgs   email   turn   body   

Flask-mail 发邮件慢(即使异步)

一开始,按照狗书上的代码异步发邮件,但是发现原本响应只需要150ms的页面加了邮件发送就变成了5s响应(这怕不是假异步)

狗书的异步发邮件代码:

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)


def send_email(to, subject, template, **kwargs):
    app = current_app._get_current_object()
    msg = Message(app.config[‘FLASKY_MAIL_SUBJECT_PREFIX‘] + subject,
               sender=app.config[‘FLASKY_MAIL_SENDER‘], recipients=[to])
    print datetime.datetime.now().second
    msg.body = render_template(template + ‘.txt‘, **kwargs)
    msg.html = render_template(template + ‘.html‘, **kwargs)
    print datetime.datetime.now().second
    thr = Thread(target=send_async_email, args=[app, msg])
    thr.start()
    print datetime.datetime.now().second
    return thr

之后我在每一个可能延时的位置加了一句print datetime.datetime.now().second,最后发现,真正拖时间的地方居然是在Message初始化的时候!

msg = Message(app.config[‘FLASKY_MAIL_SUBJECT_PREFIX‘] + subject,
               sender=app.config[‘FLASKY_MAIL_SENDER‘], recipients=[to])

于是自己优化了一下发邮件的代码,把Message初始化的部分也放进了异步线程中。

优化后,速度明显提升:)

我的优化代码:

def send_async_email(app, to, subject, template_done_html, template_done_txt):
    with app.app_context():
        msg = Message(app.config[‘FLASKY_MAIL_SUBJECT_PREFIX‘] + subject,
                      sender=app.config[‘FLASKY_MAIL_SENDER‘], recipients=[to])
        msg.body = template_done_txt
        msg.html = template_done_html
        mail.send(msg)


def send_email(to, subject, template, **kwargs):
    app = current_app._get_current_object()
    template_done_html = render_template(template + ‘.html‘, **kwargs)
    template_done_txt = render_template(template + ‘.txt‘, **kwargs)
    thr = Thread(target=send_async_email, args=[app, to, subject, template_done_html, template_done_txt])
    thr.start()
    return thr

Flask-mail 发邮件慢(即使异步)

标签:异步   htm   current   with   sage   rgs   email   turn   body   

原文地址:https://www.cnblogs.com/santiego/p/10356001.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!