Alegerea rutelor proxy HTTPX cu proxy și mounts
Folosește proxy și montări de transport HTTPX cu schema corectă, comportament de mediu explicit și limite separate pentru conectare și citire.
Folosește proxy= când un singur endpoint trebuie să gestioneze cererile clientului. Folosește mounts= când schemele destinațiilor cer rute diferite. Exemplele folosesc aceste interfețe HTTPX; un proiect cu vechiul API proxies= are nevoie de configurație potrivită versiunii.
Un 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)
Înlocuiește interfața locală de ascultare cu un proxy HTTP activ. Un candidat din lista de proxy-uri HTTP trebuie totuși testat cu destinația ta. O țintă HTTPS poate folosi acest endpoint http:// prin CONNECT. Schimbarea schemei în https:// solicită TLS către proxy-ul însuși, ceea ce trebuie să accepte atât clientul, cât și interfața de ascultare.
Rute separate după schema destinației
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)
Cheile montărilor corespund URL-urilor țintă. Țintele HTTP aleg aici portul 8080, iar HTTPS portul 8081. Valoarea proxy-ului descrie protocolul propriu al interfeței de ascultare, deci montarea HTTPS poate conține corect un proxy http://. Pune endpointurile tale și verifică ambele scheme de destinație.
Ambele rețete setează trust_env=False pe client și, unde sunt furnizate, pe transporturi. Altfel HTTPX citește implicit variabilele de mediu pentru proxy și certificate. Dacă implementarea depinde de ele, lasă descoperirea activă sau configurează explicit rutele și încrederea necesare. Pentru încredere privată folosește contextul TLS și configurația CA acceptate de versiunea ta HTTPX; păstrează verificarea destinației activă. Încrederea în proxy-ul HTTPS poate fi separată de cea în destinație.
httpx.Timeout(15.0, connect=5.0) înlocuiește timpul de conectare și oferă celorlalte componente configurate valoarea implicită. Citirea, scrierea și așteptarea poolului au limite separate; cincisprezece secunde nu reprezintă un termen total de timp real. Un timeout al poolului poate însemna că altă activitate reține conexiunile disponibile. Închide corect clienții și răspunsurile în streaming înainte de a considera asta dovada că proxy-ul nu poate fi accesat.