Per una singola richiesta asincrona tramite un proxy HTTP senza autenticazione, mantieni il percorso su session.get(). Aggiungi aiohttp al progetto se necessario:

uv add aiohttp

Sostituisci l’indirizzo di documentazione qui sotto con il tuo listener HTTP o un candidato dalla lista di proxy HTTP. Deve consentire CONNECT alla destinazione HTTPS; un endpoint che supporta solo SOCKS richiede un connettore adatto invece di questo argomento proxy.

import asyncio
import aiohttp

async def main():
    timeout = aiohttp.ClientTimeout(total=15, connect=5)
    async with aiohttp.ClientSession(
        timeout=timeout,
        trust_env=False,
    ) as session:
        async with session.get(
            "https://example.com/",
            proxy="http://203.0.113.10:8080",
        ) as response:
            print(response.status)
            print((await response.text())[:200])

asyncio.run(main())

La richiesta stampa il suo stato HTTP e i primi 200 caratteri del testo di risposta. Un 403 o 429 rimane qui una risposta ispezionabile; chiama response.raise_for_status() se l’applicazione deve trasformare gli stati non riusciti in eccezioni. I gestori di contesto asincroni chiudono sessione e risposta alla fine dei rispettivi blocchi, anche in caso di eccezione.

Il budget total di 15 secondi copre l’operazione di richiesta. Il budget connect di 5 secondi include l’attesa di una connessione disponibile nel pool, quindi un pool occupato può esaurirlo prima dell’apertura di un nuovo socket. La distinzione conta quando la singola chiamata viene adattata a controlli concorrenti.

trust_env=False mantiene esplicito il percorso mostrato. aiohttp non rileva per impostazione predefinita le variabili d’ambiente proxy; esportarne una in un altro terminale non configura questa chiamata. Scegli trust_env=True solo quando l’ambiente ereditato dal processo è la politica di instradamento desiderata.

Articoli correlati