9

我已经能够创建在此链接的每个请求中创建的对象:http: //flask.pocoo.org/docs/appcontext/#locality-of-the-context

我实际上是在基于http://blog.miguelgrinberg.com/post/designing-a-restful-api-using-flask-restful创建一个 API 。

我希望能够加载一次对象并让它返回处理后的响应,而不是在每次请求时加载。该对象不是数据库,只需要 unpickling 一个大文件。

我浏览了文档,但我仍然对整个 Flask 两种状态的事情感到困惑。

4

1 回答 1

10

Flask 上下文仅适用于每个请求。使用全局模块来存储您只想加载一次的数据。

您可以在启动时加载数据,作为全局:

some_global_name = load_data_from_pickle()

支持多个进程的 WSGI 服务器要么分叉进程,要么根据需要启动新的 Python 解释器。分叉时,全局变量被复制到子进程。

您还可以使用before_first_request()钩子将该数据加载到您的流程中;仅当进程必须处理实际请求时才调用此方法。这将在进程分叉之后,为您的子进程提供唯一数据:

@app.before_first_request
def load_global_data():
    global some_global_name
    some_global_name = load_data_from_pickle()
于 2014-06-16T20:05:31.397 回答