通过梳理 celery_app 与flask_app关系理解 “working outside of application context” 报错

在这里插入图片描述

背景

flask项目中使用celery,有时遇到“working outside of application context”报错。究其原因是因为celery的实例app运行在与flask app 独立的进程空间,当在celery 任务中与flask app交互,会因为不存在flask的上下文抛出此异常

解决思路

在执行flask app交互的逻辑前,使用 “with app.app_context():” 手动调用flask上下文,如在使用flask_mail模块发送邮件中(以下代码仅作演示,无法运行

from flask_mail import Mail, Message


app = Flask(__name__)
app.config['MAIL_SERVER']='smtp.qq.com'
# ...... 省略部分配置信息
app.config['CELERY_BROKER_URL']='redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND']='redis://localhost:6379/0'

mail = Mail(app
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值