Volba tras proxy v HTTPX pomocí proxy a mounts
Použijte proxy a připojení transportů HTTPX se správným schématem, výslovným chováním prostředí a oddělenými limity připojení a čtení.
Použijte proxy=, když má požadavky klienta obsluhovat jediný koncový bod. Použijte mounts=, když schémata cílů potřebují různé trasy. Příklady využívají tato rozhraní HTTPX; projekt se starším API proxies= potřebuje konfiguraci odpovídající verzi.
Jeden koncový bod
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)
Nahraďte místní naslouchající rozhraní běžící HTTP proxy. I kandidát ze seznamu HTTP proxy se musí otestovat s vaším cílem. HTTPS cíl může tento bod http:// použít přes CONNECT. Změna schématu na https:// naopak žádá TLS k samotné proxy, což musí podporovat klient i naslouchající rozhraní.
Oddělené trasy podle schématu cíle
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)
Klíče připojení odpovídají cílovým URL. HTTP cíle zde volí port 8080 a HTTPS cíle port 8081. Hodnota proxy popisuje vlastní protokol naslouchajícího rozhraní, proto může připojení pro HTTPS správně obsahovat proxy http://. Doplňte vlastní koncové body a ověřte obě schémata cílů.
Oba postupy nastavují trust_env=False na klientovi a případně i na předaných transportech. Jinak HTTPX standardně čte proměnné prostředí pro proxy a certifikáty. Pokud na nich nasazení závisí, ponechte jejich zjišťování zapnuté nebo výslovně nastavte trasy a důvěru. Pro soukromou důvěru použijte kontext TLS a nastavení CA podporované vaší verzí HTTPX; ověřování cíle ponechte zapnuté. Důvěra k HTTPS proxy může být oddělená od důvěry k cíli.
httpx.Timeout(15.0, connect=5.0) přepíše timeout připojení a ostatním nakonfigurovaným složkám poskytne výchozí hodnotu. Čtení, zápis a čekání na pool mají samostatné limity; patnáct sekund není celkový limit uplynulého času. Timeout poolu může znamenat, že jiná práce drží dostupná spojení. Než to označíte za důkaz nedostupné proxy, správně uzavírejte klienty a streamované odpovědi.