Brug proxy=, når ét endepunkt skal håndtere klientens anmodninger. Brug mounts=, når destinationsskemaer kræver forskellige ruter. Eksemplerne bruger disse HTTPX-grænseflader; et projekt med den ældre proxies=-API kræver konfiguration, der passer til versionen.

Ét endepunkt

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)

Erstat det lokale lyttepunkt med en kørende HTTP-proxy. En kandidat fra listen over HTTP-proxyer skal stadig testes mod din destination. Et HTTPS-mål kan bruge dette http://-endepunkt gennem CONNECT. At ændre skemaet til https:// anmoder i stedet om TLS til selve proxyen og kræver støtte hos både klient og lyttepunkt.

Separate ruter efter destinationsskema

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)

Monteringsnøgler matcher mål-URL’er. HTTP-mål vælger her port 8080, HTTPS-mål port 8081. Proxyværdien beskriver lyttepunktets egen protokol, så HTTPS-monteringen kan korrekt indeholde en http://-proxy. Indsæt dine endepunkter og kontrollér begge destinationsskemaer.

Begge opskrifter sætter trust_env=False på klienten og, hvor de angives, på transporterne. Ellers læser HTTPX som standard miljøvariabler for proxy og certifikater. Hvis din udrulning afhænger af dem, behold automatisk registrering eller konfigurér ruter og tillid eksplicit. Brug TLS-kontekst og CA-konfiguration, som din HTTPX-version understøtter, til privat tillid; lad destinationskontrollen være aktiv. Tillid til HTTPS-proxyen kan være adskilt fra destinationens.

httpx.Timeout(15.0, connect=5.0) tilsidesætter forbindelsestimeouten og giver de øvrige konfigurerede timeoutdele standardværdien. Læsning, skrivning og ventetid på puljen har separate grænser; femten sekunder er ikke en samlet frist for forløbet tid. En puljetimeout kan betyde, at andet arbejde holder de ledige forbindelser. Luk klienter og streamingsvar korrekt, før du tager det som bevis for en utilgængelig proxy.

Relaterede artikler