Käytä proxy=-asetusta, kun yhden päätepisteen pitää käsitellä asiakkaan pyynnöt. Käytä mounts=-asetusta, kun kohteiden skeemat tarvitsevat eri reittejä. Esimerkit käyttävät näitä HTTPX-rajapintoja; vanhaa proxies=-API:a käyttävä projekti tarvitsee oman versionsa mukaisen määrityksen.

Yksi päätepiste

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)

Korvaa paikallinen kuuntelija toimivalla HTTP-välityspalvelimella. Myös HTTP-välityspalvelinten luettelon ehdokas pitää testata kohteesi kanssa. HTTPS-kohde voi käyttää tätä http://-päätepistettä CONNECTin kautta. Skeeman muuttaminen muotoon https:// pyytää sen sijaan TLS:ää itse välityspalvelimeen, mitä sekä kuuntelijan että asiakkaan on tuettava.

Eri reitit kohteen skeeman mukaan

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)

Liitoksen avaimet vastaavat kohde-URL:eja. HTTP-kohteet valitsevat tässä portin 8080 ja HTTPS-kohteet portin 8081. Välityspalvelimen arvo kuvaa kuuntelijan omaa protokollaa, joten HTTPS-liitos voi oikein sisältää http://-välityspalvelimen. Vaihda päätepisteet omiksi ja tarkista molemmat kohdeskeemat.

Molemmat ohjeet asettavat trust_env=False asiakkaaseen ja annettuihin siirtokerroksiin. Muuten HTTPX lukee oletuksena välityspalvelin- ja varmenneympäristömuuttujat. Jos käyttöönotto tarvitsee niitä, jätä tunnistus päälle tai määritä reitit ja luottamus nimenomaisesti. Käytä yksityiseen luottamukseen HTTPX-versiosi tukemaa TLS-kontekstia ja CA-määritystä; jätä kohteen tarkistus päälle. HTTPS-välityspalvelimen luottamus voi olla erillään kohteen luottamuksesta.

httpx.Timeout(15.0, connect=5.0) korvaa yhteyden aikakatkaisun ja antaa muille määritetyille aikakatkaisukomponenteille oletusarvon. Lukemisella, kirjoittamisella ja poolin odottamisella on omat rajansa; viisitoista sekuntia ei ole kokonaisaikaraja. Poolin aikakatkaisu voi tarkoittaa, että muu työ pitää saatavilla olevia yhteyksiä varattuina. Sulje asiakkaat ja suoratoistovastaukset oikein ennen kuin pidät sitä merkkinä välityspalvelimen saavuttamattomuudesta.

Aiheeseen liittyvät artikkelit