Gebruik proxy= als één eindpunt de verzoeken van de client moet afhandelen. Gebruik mounts= als bestemmingsschema’s verschillende routes nodig hebben. Deze voorbeelden gebruiken die HTTPX-interfaces; een project met de oudere proxies=-API heeft configuratie voor die versie nodig.

Eén eindpunt

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)

Vervang de lokale luisteraansluiting door een draaiende HTTP-proxy. Ook een kandidaat uit de lijst met HTTP-proxy’s moet je tegen jouw bestemming testen. Een HTTPS-doel kan dit http://-eindpunt via CONNECT gebruiken. Het schema veranderen in https:// vraagt TLS naar de proxy zelf, wat zowel client als luisteraansluiting moeten ondersteunen.

Routes scheiden op bestemmingsschema

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)

Mountsleutels passen op doel-URL’s. HTTP-doelen kiezen hier poort 8080; HTTPS-doelen poort 8081. De proxywaarde beschrijft het protocol van de luisteraansluiting zelf, dus de HTTPS-mount kan terecht een http://-proxy bevatten. Vul je eindpunten in en controleer beide bestemmingsschema’s.

Beide recepten zetten trust_env=False op de client en, waar meegegeven, op de transports. Anders leest HTTPX standaard proxy- en certificaatomgevingsvariabelen. Als de uitrol daarop steunt, laat detectie aan of stel de vereiste routes en het vertrouwen expliciet in. Gebruik voor eigen vertrouwen de TLS-context en CA-configuratie van jouw HTTPX-versie; laat doelverificatie aan. Vertrouwen in de HTTPS-proxy kan losstaan van vertrouwen in de bestemming.

httpx.Timeout(15.0, connect=5.0) overschrijft de verbindingstime-out en geeft de overige ingestelde time-outcomponenten de standaardwaarde. Lezen, schrijven en wachten op de pool hebben aparte limieten; vijftien seconden zijn geen totale deadline voor de verstreken tijd. Een pooltime-out kan betekenen dat ander werk beschikbare verbindingen vasthoudt. Sluit clients en streamingresponses correct voordat je dat als bewijs voor een onbereikbare proxy ziet.

Gerelateerde artikelen