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.

Artigos relacionados