Escolhendo rotas de proxy no HTTPX com proxy e mounts
Use proxy e montagens de transporte do HTTPX com o esquema certo, controle explícito do ambiente e limites separados de conexão e leitura.
Use proxy= quando um endpoint deve atender às requisições do cliente. Use mounts= quando os esquemas de destino precisam de rotas diferentes. Estes exemplos usam essas interfaces do HTTPX; um projeto com a antiga API proxies= precisa de configuração correspondente à versão.
Um endpoint
import httpx
timeout = httpx.Timeout(15.0, connect=5.0)
with httpx.Client(
proxy="http://127.0.0.1:8080",
trust_env=False,
timeout=timeout,
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
Troque o listener local por um proxy HTTP em execução; um candidato da lista de proxies HTTP ainda precisa ser testado contra seu destino. Um destino HTTPS pode usar este endpoint http:// por CONNECT. Mudar o esquema para https:// solicita TLS até o próprio proxy, com suporte necessário no listener e no cliente.
Separando rotas pelo esquema de destino
import httpx
mounts = {
"http://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8080",
trust_env=False,
),
"https://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8081",
trust_env=False,
),
}
with httpx.Client(
mounts=mounts,
trust_env=False,
timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
As chaves das montagens correspondem às URLs de destino. Aqui, destinos HTTP selecionam a porta 8080; HTTPS, a porta 8081. O valor do proxy descreve o protocolo do próprio listener, então a montagem HTTPS pode conter corretamente um proxy http://. Substitua os endpoints e confira os dois esquemas de destino.
As duas receitas definem trust_env=False no cliente e, quando fornecidos, nos transportes. Caso contrário, o HTTPX lê por padrão variáveis de ambiente de proxy e certificados. Se sua implantação depende delas, mantenha a descoberta ativa ou configure explicitamente as rotas e a confiança necessárias. Para confiança privada, use o contexto TLS e a configuração CA aceitos pela sua versão do HTTPX; deixe a verificação do destino ativa. A confiança no proxy HTTPS pode ser separada da confiança no destino.
httpx.Timeout(15.0, connect=5.0) substitui o timeout de conexão e fornece o valor padrão aos demais componentes configurados. Leitura, escrita e espera pelo pool têm limites separados; quinze segundos não são um prazo total de tempo decorrido. Um timeout do pool pode significar que outro trabalho ocupa as conexões disponíveis. Feche corretamente clientes e respostas em streaming antes de tratar isso como evidência de que o proxy está inacessível.