Una petició aiohttp a través d’un proxy HTTP
Fes una petició aiohttp amb un proxy HTTP sense autenticació, inspecciona’n l’estat i acaba dins d’un cicle de vida asíncron explícit.
Per a una petició asíncrona a través d’un proxy HTTP sense autenticació, mantén la ruta a session.get(). Afegeix aiohttp al projecte si cal:
uv add aiohttpSubstitueix l’adreça de documentació següent pel teu punt d’escolta HTTP o un candidat de la llista de proxys HTTP. Ha de permetre CONNECT cap a la destinació HTTPS; un punt que només admet SOCKS necessita un connector adequat en lloc d’aquest argument 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 petició mostra l’estat HTTP i els primers 200 caràcters del text de resposta. Un 403 o 429 continua sent una resposta inspeccionable aquí; crida response.raise_for_status() si l’aplicació ha de convertir els estats no reeixits en excepcions. Els gestors de context asíncrons tanquen la sessió i la resposta en acabar els blocs, també si hi ha una excepció.
El pressupost total de 15 segons cobreix l’operació de la petició. El pressupost connect de 5 segons inclou esperar una connexió disponible del pool; per tant, un pool ocupat pot esgotar-lo abans d’obrir un sòcol nou. La distinció importa quan adaptes la crida única a comprovacions concurrents.
trust_env=False manté explícita la ruta mostrada. aiohttp no descobreix per defecte variables d’entorn de proxy; exportar-ne una en un altre terminal no configura aquesta crida. Tria trust_env=True només quan l’entorn heretat pel procés sigui la política d’encaminament prevista.