Asynchronous 使用Flask安全性发送异步电子邮件

Asynchronous 使用Flask安全性发送异步电子邮件,asynchronous,flask,flask-security,flask-mail,Asynchronous,Flask,Flask Security,Flask Mail,我正在尝试将Flask安全配置为异步发送电子邮件 我有一些代码可以通过Flask Mail发送异步电子邮件,但我在将其与我的应用程序工厂功能集成以使其与Flask安全性结合使用时遇到了问题 应用程序工厂: mail = Mail() db = SQLAlchemy() security = Security() from app.models import User, Role user_datastore = SQLAlchemyUserDatastore(db, User, Role)

我正在尝试将Flask安全配置为异步发送电子邮件

我有一些代码可以通过Flask Mail发送异步电子邮件,但我在将其与我的应用程序工厂功能集成以使其与Flask安全性结合使用时遇到了问题

应用程序工厂:

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.send_mail_task
覆盖扩展发送电子邮件的方式

那么我应该在哪里实现这个装饰器呢?好像我把它放在应用程序工厂的任何地方,都会得到循环导入。

以下是我尝试使用的异步电子邮件功能,摘自:

要使用应用程序工厂,此代码需要放在哪里?


提前感谢。

我是这样做到的:

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_ctx = security.init_app(app, user_datastore)

    # Send Flask-Security emails asynchronously
    @security_ctx.send_mail_task
    def async_security_email(msg):
        send_security_email(app, mail, msg)

    return app
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_ctx = security.init_app(app, user_datastore)

    # Send Flask-Security emails asynchronously
    @security_ctx.send_mail_task
    def async_security_email(msg):
        send_security_email(app, mail, msg)

    return app