4

私はしばらくの間 (Flask で) Python Web アプリを作成してきましたが、複数の要求/応答サイクルでデータベース アクセスがどのように機能するかを完全に把握しているとは思いません。Python を使用する前は、私の Web プログラミングの経験は PHP でした (数年に相当する) ため、私の PHP の経験が私の Python 作業の一部を誤解させているのではないかと心配しています。

PHP では、リクエスト間で何も共有されないため、新しいリクエストごとにまったく新しい DB 接続が作成されます。リクエストが多ければ多いほど、サポートする必要のある接続が増えます。ただし、要求間で状態が共有される Python Web アプリでは、DB 接続は維持できます。

したがって、これらの接続を管理し、確実に閉じる必要があります。また、何らかの接続プールが必要です。すべてのリクエストで共有される接続が 1 つだけの場合、十分な接続が利用できない場合、リクエストが DB アクセスの待機をブロックする可能性があるためです。

これは正しい理解ですか?または、違いをうまく識別できましたか?Python Web アプリでは、多くのリクエスト間で接続を共有する DB 接続プールが必要ですか? また、プール内の接続数は、アプリケーションの要求負荷によって異なりますか?

Psycopg2 を使用しています。

4

2 に答える 2

4

SQLAlchemy を調べたことはありますか? 多くの汚れた詳細を処理します。接続のプールを維持し、必要に応じてそれらを再利用/閉じます。

于 2013-06-09T17:39:04.057 に答える
0

接続コストを回避するには、プーリングを使用するのが最善の方法のようです。ドキュメント
の psycopg2.pool を直接使用するか、ここのコメントに下線が引かれているように、SQL Alchemy として高レベルの抽象化レイヤーを介して使用します。

于 2014-08-20T10:25:46.377 に答える