Flaskのリクエストで再利用できるデータベースへの接続プールを作成する必要があります。ドキュメント(0.11.x
)は、データベース接続を格納するアプリケーションコンテキストであるg
を使用することを提案しています。フラスコのアプリケーションコンテキストとグローバル接続
アプリケーションのコンテキストが作成され、各要求の前後に破棄されるという問題があります。したがって、作成される接続の数に制限はなく、接続は再利用されません。私が使用していたコードは次のとおりです。
def get_some_connection():
if not hasattr(g, 'some_connection'):
logger.info('creating connection')
g.some_connection = SomeConnection()
return g.some_connection
と
@app.teardown_appcontext
def destroy_some_connection(error):
logger.info('destroying some connection')
g.some_connection.close()
接続を閉じるには、この意図的な、つまり、フラスコを新鮮接続毎回を作成する、または使用して、いくつかの問題がありますされています私のコードのアプリケーションコンテキストの。また、意図的に接続がグローバルになる回避策がある場合。私は、古い拡張のいくつかはapp['extension']
自体で接続を維持していることがわかります。
次に、要求コンテキストとアプリケーションコンテキストの違いは何ですか。 –
@SiddharthGupta:アプリコンテキストが長く続く。要求コンテキストが作成される前に存在し、応答が設定された直後まで存在します。 –