Wybór tras proxy HTTPX przez proxy i mounts
Używaj proxy i montowań transportu HTTPX z poprawnym schematem, jawną obsługą środowiska i osobnymi limitami połączenia i odczytu.
Użyj proxy=, gdy jeden punkt końcowy ma obsługiwać żądania klienta. Użyj mounts=, gdy schematy celów wymagają różnych tras. Przykłady korzystają z tych interfejsów HTTPX; projekt ze starszym API proxies= potrzebuje konfiguracji zgodnej z wersją.
Jeden punkt końcowy
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)
Zastąp lokalny punkt nasłuchu działającym proxy HTTP. Kandydata z listy proxy HTTP nadal trzeba sprawdzić z własnym celem. Cel HTTPS może użyć tego punktu http:// przez CONNECT. Zmiana schematu na https:// żąda TLS do samego proxy, co muszą obsługiwać klient i punkt nasłuchu.
Osobne trasy według schematu celu
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)
Klucze montowań pasują do docelowych URL-i. Cele HTTP wybierają tu port 8080, a HTTPS port 8081. Wartość proxy opisuje własny protokół punktu nasłuchu, więc montowanie HTTPS może poprawnie zawierać proxy http://. Wstaw własne punkty końcowe i sprawdź oba schematy celów.
Obie receptury ustawiają trust_env=False na kliencie i, jeśli podano, na transportach. W przeciwnym razie HTTPX domyślnie czyta zmienne środowiska proxy i certyfikatów. Jeśli wdrożenie ich potrzebuje, pozostaw wykrywanie włączone lub jawnie ustaw wymagane trasy i zaufanie. Dla prywatnego zaufania użyj kontekstu TLS i konfiguracji CA obsługiwanych przez swoją wersję HTTPX; nie wyłączaj weryfikacji celu. Zaufanie do proxy HTTPS może być odrębne od zaufania do celu.
httpx.Timeout(15.0, connect=5.0) zastępuje limit połączenia i dostarcza pozostałym skonfigurowanym składnikom wartość domyślną. Odczyt, zapis i oczekiwanie na pulę mają osobne limity; piętnaście sekund nie jest całkowitym terminem czasu rzeczywistego. Timeout puli może oznaczać, że inne zadanie zajmuje dostępne połączenia. Prawidłowo zamykaj klientów i odpowiedzi strumieniowe, zanim uznasz to za dowód niedostępności proxy.