Izbor proxy ruta u HTTPX-u pomoću proxy i mounts
Koristite proxy i montiranja transporta HTTPX s ispravnom shemom, izričitom obradom okruženja i odvojenim ograničenjima veze i čitanja.
Koristite proxy= kada jedna krajnja tačka treba obraditi klijentove zahtjeve. Koristite mounts= kada sheme odredišta trebaju različite rute. Primjeri koriste ta HTTPX sučelja; projekt sa starijim API-jem proxies= treba konfiguraciju za svoju verziju.
Jedna krajnja tačka
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)
Zamijenite lokalno sučelje za osluškivanje aktivnim HTTP proxyjem. Kandidata s liste HTTP proxyja i dalje treba testirati s vašim odredištem. HTTPS cilj može koristiti ovu tačku http:// preko CONNECT-a. Promjena sheme u https:// traži TLS do samog proxyja, što moraju podržavati sučelje za osluškivanje i klijent.
Odvojene rute prema shemi odredišta
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)
Ključevi montiranja odgovaraju ciljnim URL-ovima. HTTP ciljevi ovdje biraju port 8080, a HTTPS ciljevi 8081. Vrijednost proxyja opisuje vlastiti protokol sučelja za osluškivanje, pa HTTPS montiranje može ispravno sadržavati proxy http://. Unesite svoje tačke i provjerite obje sheme odredišta.
Oba postupka postavljaju trust_env=False na klijentu i, gdje su navedeni, na transportima. Inače HTTPX podrazumijevano čita varijable okruženja za proxy i certifikate. Ako implementacija zavisi od njih, ostavite otkrivanje uključeno ili izričito postavite rute i povjerenje. Za privatno povjerenje koristite TLS kontekst i CA konfiguraciju svoje HTTPX verzije; provjera odredišta ostaje uključena. Povjerenje HTTPS proxyju može biti odvojeno od povjerenja odredištu.
httpx.Timeout(15.0, connect=5.0) nadjačava vremensko ograničenje povezivanja, a drugim konfiguriranim dijelovima daje podrazumijevanu vrijednost. Čitanje, pisanje i čekanje na skup veza imaju odvojene limite; petnaest sekundi nije ukupni rok proteklog vremena. Istek čekanja na skup može značiti da drugi posao drži raspoložive veze. Pravilno zatvorite klijente i streaming odgovore prije nego to smatrate dokazom nedostupnog proxyja.