Elegir rutas de proxy en HTTPX con proxy y mounts
Usa proxy y montajes de transporte de HTTPX con el esquema correcto, un comportamiento de entorno explícito y límites separados de conexión y lectura.
Usa proxy= cuando un solo punto de conexión deba gestionar las peticiones del cliente. Usa mounts= cuando los esquemas de destino necesiten rutas distintas. Estos ejemplos utilizan esas interfaces de HTTPX; un proyecto con la antigua API proxies= necesita una configuración acorde con su versión.
Un solo punto de conexión
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)
Sustituye el punto de escucha local por un proxy HTTP activo; un candidato de la lista de proxies HTTP aún debe probarse contra tu destino. Un destino HTTPS puede usar este punto http:// mediante CONNECT. Cambiar el esquema a https:// solicita TLS hacia el propio proxy, lo que requiere soporte del cliente y del punto de escucha.
Separar rutas por 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)
Las claves de montaje coinciden con las URL de destino. Aquí los destinos HTTP eligen el puerto 8080 y los HTTPS el 8081. El valor del proxy describe el protocolo del propio punto de escucha, así que el montaje HTTPS puede contener correctamente un proxy http://. Sustituye los puntos de conexión y comprueba ambos esquemas de destino.
Las dos recetas fijan trust_env=False en el cliente y, cuando se proporcionan, en los transportes. En caso contrario, HTTPX lee por defecto las variables de entorno de proxy y certificados. Si el despliegue depende de ellas, deja activa la detección o configura explícitamente las rutas y la confianza necesarias. Para confianza privada, usa el contexto TLS y la configuración CA de tu versión de HTTPX; mantén activa la verificación del destino. La confianza del proxy HTTPS puede ser independiente de la del destino.
httpx.Timeout(15.0, connect=5.0) sustituye el tiempo de conexión y aplica el valor predeterminado a los demás componentes configurados. Lectura, escritura y espera del pool tienen límites separados; quince segundos no son un plazo total de tiempo transcurrido. Un timeout del pool puede indicar que otro trabajo retiene las conexiones disponibles. Cierra bien los clientes y las respuestas en streaming antes de interpretarlo como prueba de que el proxy es inaccesible.