Upotrijebite proxy= kada jedna krajnja točka treba obraditi klijentove zahtjeve. Upotrijebite mounts= kada sheme odredišta trebaju različite rute. Primjeri rabe ta HTTPX sučelja; projekt sa starijim API-jem proxies= treba konfiguraciju usklađenu s verzijom.

Jedna krajnja toč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 slušanje aktivnim HTTP proxyjem. Kandidata s popisa HTTP proxyja i dalje treba testirati s vašim odredištem. HTTPS cilj može rabiti ovu točku http:// putem CONNECT-a. Promjena sheme u https:// traži TLS do samog proxyja, što moraju podržavati i sučelje za slušanje i klijent.

Zasebne 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 priključak 8080, a HTTPS ciljevi 8081. Vrijednost proxyja opisuje vlastiti protokol sučelja za slušanje, pa HTTPS montiranje može ispravno sadržavati proxy http://. Unesite svoje točke i provjerite obje sheme odredišta.

Oba postupka postavljaju trust_env=False na klijentu i, gdje su navedeni, na transportima. Inače HTTPX zadano čita varijable okruženja za proxy i certifikate. Ako vaša implementacija ovisi o njima, ostavite otkrivanje uključeno ili izričito konfigurirajte rute i povjerenje. Za privatno povjerenje rabite TLS kontekst i CA konfiguraciju koju podržava vaša verzija HTTPX-a; provjera odredišta ostaje uključena. Povjerenje HTTPS proxyju može biti zasebno od povjerenja odredištu.

httpx.Timeout(15.0, connect=5.0) nadjačava vremensko ograničenje povezivanja, a ostalim konfiguriranim sastavnicama daje zadanu vrijednost. Čitanje, pisanje i čekanje na skup veza imaju zasebna ograničenja; 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 odgovore u toku prije nego to smatrate dokazom nedostupnog proxyja.

Povezani članci