Python flask缓存在blueprint/app factory中导致名称错误
目前,我有一个应用程序工厂,如下所示:Python flask缓存在blueprint/app factory中导致名称错误,python,caching,flask,Python,Caching,Flask,目前,我有一个应用程序工厂,如下所示: from flask import Flask from flask.ext.bootstrap import Bootstrap from flask.ext.cache import Cache from config import config bootstrap = Bootstrap() cache = Cache(config={'CACHE_TYPE': 'simple'}) def create_app(environment):
from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.cache import Cache
from config import config
bootstrap = Bootstrap()
cache = Cache(config={'CACHE_TYPE': 'simple'})
def create_app(environment):
app = Flask(__name__)
app.config.from_object(config[environment])
bootstrap.init_app(app)
cache.init_app(app)
from main import main as base_blueprint
from charts.statistics import statistics
app.register_blueprint(base_blueprint)
app.register_blueprint(statistics, url_prefix='/statistics')
return app
按照这个模式,我有我的统计蓝图。charts/
目录中的\uuuu init\uuuu.py
如下所示:
from flask import Blueprint
statistics = Blueprint('statistics', __name__)
from . import statistics_charts
。。。和统计图.py
只包含以下内容
@statistics.route('/summary_chart')
@cache.memoize(timeout=5000)
def summary_chart():
# ...
return jsonify(my_data)
然而,当我尝试运行这个时,它不断地给我一个名称错误,说缓存从未定义过。这在其他应用程序中有效,它们只是一个文件,但似乎不适用于应用程序工厂和蓝图样式
要使缓存在蓝图中工作,必须执行哪些操作?将两行
cache
移动到statistics\u charts.py
文件中。然后它会抱怨没有定义统计信息,但这是一个很容易解决的问题。您需要在蓝图的顶部添加以下导入语句
from . import cache
图表。统计是包图表中的蓝图。您有一个名为charts.statistics的模块吗?你之所以这么做,似乎是因为这个导入:from charts.statistics导入statistics如果没有,我甚至不确定导入是如何工作的。实际上,我在提交这个问题后就解决了这个问题。它实际上什么也没做,这有点令人沮丧。不完全确定它最初是如何工作的我相信我发现了问题:
init_app
应该接收配置,而不是类实例化