HTTPX:n proxy-reittien valinta proxy- ja mounts-asetuksilla
Käytä HTTPX:n proxy-asetusta ja siirtokerrosten liitoksia oikealla skeemalla, selkeällä ympäristötoiminnalla ja erillisillä yhteys- ja lukurajoilla.
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.