Flask 解决 —— RuntimeError: Working outside of application context.

本文介绍了一个Flask项目中使用多线程时遇到的'RuntimeError: Working outside of application context.'错误及解决方法。通过修改配置文件和初始化应用的方式避免了公共变量引发的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近接手Flask项目,再引入多线程操作时出现 ‘RuntimeError: Working outside of application context.’逐步调试发现是我使用了公共变量导致,flask 框架引入了应用上下文管理,详见:http://flask.pocoo.org/docs/0.12/appcontext/,但又不能简单使用下列方法解决,因为无法获取到公共变量。


from flask import Flask, current_app

app = Flask(__name__)
with app.app_context():
    # within this block, current_app points to app.
    print current_app.name
     于是我把详细解决方法写在下面:

config.py

class Config:
    IPMI_INFO = [...] # 这个是多线程要调用的公共变量,也是它导致出现标题错误
config = {
   'default': Config
}...

      app.__init__.py

...代码省略
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
...

     执行文件 **.py

from app import create_app#新添解决代码
app = create_app('default')#新添解决代码
...
with app.app_context():#新添代码 解决
    ...原代码内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值