Voľba trás proxy v HTTPX pomocou proxy a mounts
Použite proxy a pripojenia transportov HTTPX so správnou schémou, výslovným správaním prostredia a oddelenými limitmi pripojenia a čítania.
Použite proxy=, keď má požiadavky klienta obsluhovať jediný koncový bod. Použite mounts=, keď schémy cieľov potrebujú rôzne trasy. Príklady využívajú tieto rozhrania HTTPX; projekt so starším API proxies= potrebuje konfiguráciu zodpovedajúcu verzii.
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 miestne počúvajúce rozhranie bežiacou HTTP proxy. Aj kandidáta zo zoznamu HTTP proxy treba otestovať s vaším cieľom. HTTPS cieľ môže tento bod http:// používať cez CONNECT. Zmena schémy na https:// naopak žiada TLS k samotnej proxy, čo musia podporovať klient aj počúvajúce rozhranie.
Oddelené trasy podľa schémy cieľa
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)
Kľúče pripojení zodpovedajú cieľovým URL. HTTP ciele tu volia port 8080 a HTTPS ciele port 8081. Hodnota proxy opisuje vlastný protokol počúvajúceho rozhrania, preto môže pripojenie pre HTTPS správne obsahovať proxy http://. Doplňte vlastné body a overte obe schémy cieľov.
Oba postupy nastavujú trust_env=False na klientovi a prípadne aj na odovzdaných transportoch. Inak HTTPX predvolene číta premenné prostredia pre proxy a certifikáty. Ak na nich nasadenie závisí, nechajte zisťovanie zapnuté alebo výslovne nastavte trasy a dôveru. Pre súkromnú dôveru použite TLS kontext a CA konfiguráciu podporované vašou verziou HTTPX; overovanie cieľa nechajte aktívne. Dôvera k HTTPS proxy môže byť oddelená od dôvery k cieľu.
httpx.Timeout(15.0, connect=5.0) prepíše časový limit pripojenia a ostatným nakonfigurovaným zložkám poskytne predvolenú hodnotu. Čítanie, zápis a čakanie na pool majú samostatné limity; pätnásť sekúnd nie je celkový limit uplynutého času. Timeout poolu môže znamenať, že iná práca drží dostupné spojenia. Kým to označíte za dôkaz nedostupnej proxy, správne zatvárajte klientov a streamované odpovede.