Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python flask缓存在blueprint/app factory中导致名称错误_Python_Caching_Flask - Fatal编程技术网

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
应该接收配置,而不是类实例化