4

HTTPAdapterrequests.Session()にマウントすると、非同期呼び出し(同じホスト(同じ接続プールに属している))を各バッチサイズが最大値よりも大きいバッチで発行していたため、接続が最終的に破棄される問題が発生しましたプールサイズ。もちろん、ソリューションは最大プールサイズを増やすことでした。Pythonの「要求」モジュールの接続プールサイズを非常に大きくするための欠点は何ですか?

私が知りたいことは、大きなバッチサイズ(最大プールサイズが大きい)と小さいバッチサイズ(プールサイズが小さい)の反復回数が少ないことです。 1つのバッチリクエストで、プールサイズを無限大に拡大し、すべての非同期コール(同じプールに属する)を発行すると何が問題になりますか?

+0

リクエストで非同期呼び出しを発行する方法を示すコードを表示できますか? – georgexsh

答えて

1

requests.adaptersHTTPAdapterでは、接続プールの設定がurllib3's PoolManagerに直接渡される可能性があります。

さらに多くの接続を可能にするためにConnectionPoolのサイズを調整することに問題はありません。しかし、ホストがあなたの要求に応答する能力を考慮する必要がある1つの欠点があります。私の経験では、これは本当のボトルネックになります。実際には、上記urllib3リンクを参照して:あなたは真のブロック=を指定した場合

しかし、その後、特定のホストに対してオープンで最もMAXSIZE 接続が可能。プールから接続が利用可能になるまで、新しいリクエストはすべて をブロックします。これは、 マルチスレッドの アプリケーションであまりにも多くの接続でホストのフラッディングを防ぐための素晴らしい方法です。

関連する問題