Pourquoi Requests ouvre plus de connexions que pool_maxsize
Utilisez pool_block pour un pool borné et ajoutez un budget applicatif lorsque la limite doit couvrir tout le trafic passant par un proxy.
Avec la valeur par défaut pool_block=False, pool_maxsize limite les connexions conservées dans un pool, et non chaque connexion simultanée. Requests peut en créer d'autres puis les abandonner ensuite.
Pour un pool borné utilisé par les requêtes HTTPS d'une session existante :
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Le montage sélectionne les URL de destination HTTPS. Les requêtes HTTP utilisent l'adaptateur monté sous http://.
| Entrée | Ce qu'elle contrôle |
|---|---|
| pool_connections | Combien de pools le gestionnaire met en cache |
| pool_maxsize | Connexions au sein d'un pool |
| pool_block=True | Attendre une connexion du pool au lieu d'en créer une supplémentaire |
Requests met également en cache les gestionnaires de proxy par URL de proxy. Ces valeurs ne forment pas un plafond total unique sur une liste tournante de proxys et de destinations. Utilisez un budget de concurrence au niveau applicatif si l'exigence est que tout le travail passe par un seul intermédiaire.
Le blocage rend indispensable la libération des réponses : consommez les corps ou fermez les réponses en streaming pour que le travail en attente puisse avancer. L'adaptateur de Requests ne fournit pas de délai d'attente distinct pour cette attente du pool dans la configuration présentée.