Python Flask异步发送邮件实现方法解析
本文详解如何在Python Flask框架中实现异步发送邮件功能。通过修改工厂函数配置邮件参数,并引入多线程机制,利用current_app获取应用上下文,确保邮件发送不阻塞主线程请求,提升Web应用响应速度与用户体验。
首先,需要对工厂函数进行配置,以设定相关的邮件参数。
from flask import Flask from config import Config from flask_sqlalchemy import SQLAlchemy from flask_mail import Mail db = SQLAlchemy() mail = Mail() def create_app(): app = Flask(__name__) app.config.from_object(Config) db.init_app(app) mail.init_app(app) from .controller import controller app.register_blueprint(controller) return app
接着,创建一个新的线程专门用于执行邮件发送任务。
from flask import current_app, render_template
from flask_mail import Message
from threading import Thread
from main import mail
def send_async_email(app, msg):
with app.app_context():
mail.send(msg)
def send_email(to, subject, template = 'index', **kwargs):
app = current_app._get_current_object()
msg = Message(subject, sender = app.config['MAIL_USERNAME'], recipients = [to])
msg.html = render_template('{}.html'.format(template), **kwargs)
thr = Thread(target = send_async_email, args = [app, msg])
thr.start()
return thr
通过调用current_app的_get_current_object()方法,可以获取当前应用程序上下文。此处对此做法进行记录。
以上内容为本文的全部介绍,期望对读者的学习有所助益,同时也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













