目前,我有一个应用程序工厂,如下所示:
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/
目录中的 __init__.py
如下所示:
from flask import Blueprint
statistics = Blueprint('statistics', __name__)
from . import statistics_charts
...和 statistics_charts.py
只是具有以下内容
@statistics.route('/summary_chart')
@cache.memoize(timeout=5000)
def summary_chart():
# ...
return jsonify(my_data)
但是,当我尝试运行它时,它不断地给我一个名称错误,说缓存从未定义。这在其他应用程序中有效,这些应用程序只是一个文件,但似乎不适用于应用程序工厂和蓝图样式。
必须做什么才能使缓存在蓝图中工作?
最佳答案
将两个 cache
行移动到 statistics_charts.py
文件中。然后它会提示statistics
没有被定义,但这是一个简单的修复。
关于python - 在蓝图/应用程序工厂中时,flask-cache 会导致名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24001158/