Flask在项目中缓存多个文件

时间:2018-02-02 08:47:49

标签: python caching flask

我对Flask比较新。我的烧瓶项目中有多个文件。到目前为止,如果我想从current_app文件外部访问app对象,我正在使用app.py

现在我正在尝试使用flask-caching扩展名向我的应用添加缓存。我在app.py

中对此进行了初始化
from flask_caching import Cache
...
cache = Cache(app, config={'CACHE_TYPE': 'simple'})

但是我在使用views.py文件时遇到了麻烦。

我有一个资源类:

class MyEndpoint(Resource):
    def get(self):
        do_stuff_here

我不知道如何在此处获取cache对象来实现此目的:

class MyEndpoint(Resource):
    @cache.cached(timeout=600)
    def get(self):
        do_stuff_here

我试着这样做:

  • from app import cache - > ImportError: cannot import name 'cache'
  • @current_app.cache.cached - > RuntimeError: Working outside of application context.

我项目的部分结构:

|
-app.py
|
--api
  |
  -__init__.py
  -views.py

2 个答案:

答案 0 :(得分:2)

我得到了它的工作。 只需在另一个文件中初始化Cache对象:

common/extensions.py

from flask_caching import Cache

cache = Cache() 

然后在app.py

from common.extensions import cache
app = Flask(__name__)
cache.init_app(app, config={'CACHE_TYPE': 'simple'})

答案 1 :(得分:0)

我有同样的问题,这是因为我在创建缓存对象之前注册了我的应用程序的模块。这会创建一个循环依赖项,模块代码会在创建之前尝试加载缓存。

初始化缓存后,在flask应用程序中注册模块。然后from app import cache应该可以在你的模块中正常工作。