Scegliere le rotte proxy HTTPX con proxy e mounts
Usa proxy e montaggi dei trasporti HTTPX con lo schema giusto, un comportamento d’ambiente esplicito e limiti distinti per connessione e lettura.
Usa proxy= quando un solo endpoint deve gestire le richieste del client. Usa mounts= quando gli schemi di destinazione richiedono rotte diverse. Gli esempi usano queste interfacce HTTPX; un progetto con la vecchia API proxies= richiede una configurazione adatta alla sua versione.
Un endpoint
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)
Sostituisci il listener locale con un proxy HTTP attivo; un candidato della lista dei proxy HTTP va comunque provato con la tua destinazione. Una destinazione HTTPS può usare questo endpoint http:// tramite CONNECT. Cambiare lo schema in https:// richiede invece TLS verso il proxy stesso, che deve essere supportato da listener e client.
Separare le rotte per schema di destinazione
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)
Le chiavi di montaggio corrispondono agli URL di destinazione. Qui HTTP sceglie la porta 8080 e HTTPS la 8081. Il valore del proxy descrive il protocollo del listener stesso: il montaggio HTTPS può quindi contenere correttamente un proxy http://. Inserisci i tuoi endpoint e controlla entrambi gli schemi di destinazione.
Entrambe le ricette impostano trust_env=False nel client e, dove forniti, nei trasporti. Altrimenti HTTPX legge per impostazione predefinita le variabili d’ambiente di proxy e certificati. Se la distribuzione ne dipende, lascia attiva la rilevazione o configura esplicitamente rotte e fiducia necessarie. Per la fiducia privata usa contesto TLS e configurazione CA supportati dalla tua versione di HTTPX; lascia attiva la verifica della destinazione. La fiducia nel proxy HTTPS può essere distinta da quella nella destinazione.
httpx.Timeout(15.0, connect=5.0) sovrascrive il timeout di connessione e fornisce il valore predefinito agli altri componenti configurati. Lettura, scrittura e attesa del pool hanno limiti separati; quindici secondi non sono una scadenza totale del tempo trascorso. Un timeout del pool può significare che altri lavori trattengono le connessioni disponibili. Chiudi correttamente client e risposte in streaming prima di considerarlo prova che il proxy sia irraggiungibile.