Por que o Requests abre mais conexões que pool_maxsize
Use pool_block para um pool limitado e adicione um orçamento de aplicação quando o limite precisar cobrir todo o tráfego através de um proxy.
Com o padrão pool_block=False, pool_maxsize limita as conexões mantidas em um pool, não cada conexão simultânea. O Requests pode criar conexões extras e descartá-las depois.
Para um pool limitado usado pelas requisições HTTPS de uma sessão existente:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)A montagem seleciona os URLs de destino HTTPS. As requisições HTTP usam o adaptador montado em http://.
| Entrada | O que controla |
|---|---|
| pool_connections | Quantos pools o gerenciador mantém em cache |
| pool_maxsize | Conexões dentro de um pool |
| pool_block=True | Esperar por uma conexão do pool em vez de criar uma extra |
O Requests também mantém em cache gerenciadores de proxy por URL de proxy. Esses valores não formam um único teto total para uma lista rotativa de proxies e destinos. Use um orçamento de concorrência em nível de aplicação se o requisito for que todo o trabalho passe por um único intermediário.
O bloqueio torna essencial liberar as respostas: consuma os corpos ou feche respostas em streaming para que o trabalho em espera possa avançar. O adaptador do Requests não fornece um tempo limite separado para essa espera do pool na configuração mostrada.