Una richiesta aiohttp tramite un proxy HTTP
Invia con aiohttp una richiesta attraverso un proxy HTTP senza autenticazione, controllane lo stato e termina in un ciclo di vita asincrono esplicito.
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 aiohttpSostituisci 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.