芹菜实例化后更改邮件配置

时间:2019-07-05 12:36:22

标签: flask celery flask-mail

我想在加载芹菜后更改Flask-Mail的邮件配置。因此,用户可以在Web界面中更改邮件配置。但是我无法更改邮件配置,因为celery始终使用旧的空邮件设置。

我找到了一种解决方法,但感觉被黑了:

@celery.task
def async_test_email():
    """ send a test email. Sender and recipient are the same. """
    p = Preferences.query.first()
    if p is None:
        current_app.logger.warning('No Preferences could be found. Abort.')
        return

    msg = Message("Hello",
                  sender=p.mail_default_sender,
                  recipients=[p.mail_default_sender])

    # override all mail settings every time the task runs
    current_app.config.update(p.mail_config)
    mail.app = current_app
    mail.state = mail.init_app(current_app)

    with current_app.app_context():
        mail.send(msg)

这样,我可以在运行时更改邮件配置。但是我真的不喜欢这种解决方案。我试图在另一项任务中更改邮件配置,并希望更改能够继续进行,但不起作用。

我找到了this question,但仍然无法持久保存对邮件设置的更改。

问候

0 个答案:

没有答案