我已经能够创建在此链接的每个请求中创建的对象:http://flask.pocoo.org/docs/appcontext/#locality-of-the-context。
我实际上是根据http://blog.miguelgrinberg.com/post/designing-a-restful-api-using-flask-restful创建API。
我希望能够加载一次对象并让它返回一个已处理的响应,而不是在每次请求时加载它。该对象不是数据库,只需要取消大文件的取消。
我查看了文档,但我仍然对这整个Flask两州的事情感到困惑。
答案 0 :(得分:6)
Flask上下文仅对每个请求应用。使用全局模块来存储您只想加载一次的数据。
您可以在启动时加载数据,作为全局:
some_global_name = load_data_from_pickle()
支持多个进程的WSGI服务器可以分叉进程,也可以根据需要启动新的Python解释器。在分叉时,全局变量被复制到子进程。
您还可以使用before_first_request()
挂钩将数据加载到您的流程中;只有在进程必须处理实际请求时才会调用此方法。这将在进程fork之后,为您的子进程提供唯一数据:
@app.before_first_request
def load_global_data():
global some_global_name
some_global_name = load_data_from_pickle()