【发布时间】:2015-02-05 08:36:32
【问题描述】:
我正在尝试将 Flask-Security 配置为异步发送电子邮件。
我有一些通过 Flask-Mail 发送异步电子邮件的代码,但是我无法将它与我的应用程序工厂功能集成,以便它与 Flask-Security 结合使用。
应用工厂:
mail = Mail()
db = SQLAlchemy()
security = Security()
from app.models import User, Role
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
def create_app(config_name):
# Config
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
# Initialize extensions
mail.init_app(app)
db.init_app(app)
security.init_app(app, user_datastore)
return app
在 Flask-Security 文档中,它说使用 @security.send_mail_task 覆盖扩展程序发送电子邮件的方式。
那么我到底在哪里实现这个装饰器呢?好像我把它放在应用程序工厂的任何地方,我都会得到循环导入。
这些是我尝试使用的异步电子邮件功能,取自this issue:
@async
def send_security_email(msg):
with app.app_context():
mail.send(msg)
@security.send_mail_task
def async_security_email(msg):
send_security_email(msg)
此代码需要放在哪里才能与应用工厂一起工作?
提前致谢。
【问题讨论】:
标签: asynchronous flask flask-security flask-mail