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://.

EntradaO que controla
pool_connectionsQuantos pools o gerenciador mantém em cache
pool_maxsizeConexões dentro de um pool
pool_block=TrueEsperar 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.

Artigos relacionados