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 aiohttp

Substitueix 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.

Articles relacionats