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.

Articoli correlati