当前位置: 首页 > 知识库问答 >
问题:

python - Python Flask 获取全局配置 current_app 的问题如何解决?

贺景铄
2023-07-26
  • 启动文件:app.py
  • 业务文件:data.py
  • 缓存类库:cache.py

现在问题是在 data.py 里调用了 cache.pycache.py 为了初始化缓存插件使用了 current_app

from flask_caching import Cache as FlaskCachefrom flask import current_appclass Cache:    instance = FlaskCache(current_app, config=current_app.config['Cache'])    @classmethod    def set(cls, key: str, value: str, timeout: int = 600):        if not cls.instance.has(key):            cls.instance.set(key, value, timeout=timeout)    @classmethod    def get(cls, key: str):        return cls.instance.get(key)

但是就挂了:RuntimeError: Working outside of application context.

因为是中间隔了一层我用了 with app.app_context(): 也不行,请问要怎么解决?
难道必须要放在 app.py 初始化然后去 import cache from app

共有2个答案

公羊宗清
2023-07-26

可以在Cache里添加一个方法

@classmethoddef init_app(cls,app,config):    cls.instance.init_app(app,config=config)

然后再app.py里

from cache import Cacheapp = Flask(___name__)Cache.init_app(app,app.config['Cache']) 

这样就不用从app导入Cache

佟英武
2023-07-26

app.py 文件里初始化:

from flask import Flaskfrom flask_caching import Cacheapp = Flask(__name__)cache = Cache(app, config=app.config['Cache'])
 类似资料:
  • 问题 你已经听说过全局解释器锁GIL,担心它会影响到多线程程序的执行性能。 解决方案 尽管Python完全支持多线程编程, 但是解释器的C语言实现部分在完全并行执行时并不是线程安全的。 实际上,解释器被一个全局解释器锁保护着,它确保任何时候都只有一个Python线程执行。 GIL最大的问题就是Python的多线程程序并不能利用多核CPU的优势 (比如一个使用了多个线程的计算密集型程序只会在一个单C

  • Mpx.config 是一个对象,包含 Mpx 的全局配置。可以在启动应用之前修改下列 property: useStrictDiff 类型: boolean 默认值:false 用法: 每次有数据变更时,是否使用严格的 diff 算法。如果项目中有大数据集的渲染建议使用,可以提升效率。 import mpx from '@mpxjs/core' mpx.config.useStrictDiff

  • 全局系统配置 服务端配置 通过服务端配置,配置每台CAT服务器的职责。 配置的sample如下: id="default"是默认的配置信息,server id="10.1.1.1" 如下的配置是表示10.1.1.1这台服务器的节点配置覆盖default的配置信息,比如下面的job-machine,alarm-machine,send-machine为true。 [注意这个IP为cat拿到的内网IP

  • 使用QueryList全局配置,避免重复操作。 QueryList的config()方法可用于全局配置QueryList。 使用场景:比如在项目中全局注册QueryList插件,这样在项目中任何位置都可以直接使用这些插件,避免重复注册操作。 示例 在项目的启动文件中全局注册一些QueryList插件和扩展一些功能,以Laravel框架为例,在AppServiceProvider.php文件的boo

  • hi-nginx-java的全局配置系统是通过config组件构造的。关于配置文件的语法和用法,请自行参考该网址的介绍。 运行时配置可通过hi_java_options进行全局配置: hi_java_options "-server -d64 -Dconfig.file=java/application.conf"; 其中的-Dconfig.file被用来指定全局配置文件application.

  • 在Java中解析XML变得非常简单。大多数代码最终调用DocumentBuilderFactory。newInstance()返回默认情况下易受XXE类攻击的XML解析器。 OWASP文档详细解释了如何配置从返回的XML解析器以防止此类攻击,但如何将其设为默认值? 我的问题是,我正在使用像JDOM2这样的库和其他处理XML的代码,我无法轻松地更改所有这些代码。我如何使安全解析器成为默认解析器? 我