9

このリンクからのすべてのリクエストで作成されるオブジェクトを作成できました: http://flask.pocoo.org/docs/appcontext/#locality-of-the-context

私は実際にhttp://blog.miguelgrinberg.com/post/designing-a-restful-api-using-flask-restfulに基づいて API を作成しています。

オブジェクトを一度ロードして、リクエストごとにロードするのではなく、処理された応答を返すようにしたいと考えています。オブジェクトは DB ではなく、大きなファイルを解凍する必要があるだけです。

私はドキュメントに目を通しましたが、このFlaskの2つの状態全体についてまだ混乱しています。

4

1 に答える 1

10

Flask コンテキストはrequest ごとにのみ適用されます。モジュールグローバルを使用して、一度だけロードしたいデータを保存します。

グローバルとして、起動時にデータをロードするだけです:

some_global_name = load_data_from_pickle()

複数のプロセスをサポートする WSGI サーバーは、必要に応じてプロセスを fork するか、新しい 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 に答える