我对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
答案 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
应该可以在你的模块中正常工作。