Choisir les routes proxy HTTPX avec proxy et mounts
Utilisez proxy et les montages de transport HTTPX avec le bon schéma d’endpoint, un comportement d’environnement explicite et des limites distinctes de connexion et de lecture.
Utilisez proxy= lorsqu’un seul endpoint doit traiter les requêtes du client. Utilisez mounts= si les schémas de destination exigent des routes différentes. Ces exemples emploient ces interfaces HTTPX ; un projet utilisant l’ancienne API proxies= doit avoir une configuration adaptée à sa version.
Un seul 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)
Remplacez le point d’écoute local par un proxy HTTP actif ; un candidat de la liste de proxys HTTP doit encore être testé avec votre destination. Une cible HTTPS peut utiliser cet endpoint http:// via CONNECT. Passer son schéma à https:// demande au contraire TLS vers le proxy lui-même, ce qui nécessite le support du client et du point d’écoute.
Séparer les routes selon le schéma de destination
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)
Les clés de montage correspondent aux URL cibles. Ici, les cibles HTTP sélectionnent le port 8080 et les cibles HTTPS le port 8081. La valeur du proxy décrit le protocole du point d’écoute lui-même : le montage HTTPS peut donc bien contenir un proxy http://. Remplacez les endpoints et vérifiez les deux schémas de destination.
Les deux recettes définissent trust_env=False sur le client et, lorsqu’ils sont fournis, sur les transports. Sinon, HTTPX lit par défaut les variables d’environnement de proxy et de certificats. Si votre déploiement en dépend, laissez la découverte active ou configurez explicitement les routes et la confiance nécessaires. Pour une confiance privée, utilisez le contexte TLS et la configuration CA pris en charge par votre version d’HTTPX ; gardez la vérification de destination active. La confiance du proxy HTTPS peut être distincte de celle de la destination.
httpx.Timeout(15.0, connect=5.0) remplace le délai de connexion et fournit aux autres composantes configurées la valeur par défaut. Lecture, écriture et attente du pool ont des limites séparées ; quinze secondes ne constituent pas un délai global en temps réel. Un délai de pool peut indiquer qu’un autre travail retient les connexions disponibles. Fermez correctement clients et réponses en streaming avant d’y voir une preuve que le proxy est inaccessible.