Para sa isang asynchronous request sa HTTP proxy na walang authentication, ilagay ang ruta sa session.get(). Idagdag ang aiohttp sa proyekto kung kailangan:

uv add aiohttp

Palitan ang address na pangdokumentasyon sa ibaba ng sarili mong HTTP listener o kandidato mula sa listahan ng HTTP proxy. Dapat nitong payagan ang CONNECT sa HTTPS destination; ang SOCKS-only endpoint ay nangangailangan ng angkop na connector sa halip na argumentong proxy na ito.

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())

Inilalabas ng request ang HTTP status at unang 200 character ng response text. Nananatiling nasusuring response ang 403 o 429 rito; tawagin ang response.raise_for_status() kung dapat gawing exception ng application ang hindi matagumpay na status. Isinasara ng async context managers ang session at response kapag natapos ang kani-kanilang block, kasama kapag may exception.

Saklaw ng 15-segundong total budget ang request operation. Kasama sa 5-segundong connect budget ang paghihintay sa bakanteng koneksyon sa pool, kaya maaaring maubos iyon ng abalang pool bago makapagbukas ng bagong socket. Mahalaga ang pagkakaibang ito kapag iniangkop ang iisang tawag sa sabayang pagsusuri.

Pinananatiling tahasan ng trust_env=False ang ipinakitang ruta. Hindi awtomatikong hinahanap ng aiohttp ang proxy environment variables bilang default; hindi mako-configure ang tawag na ito sa pag-export ng variable sa ibang terminal. Piliin lang ang trust_env=True kapag ang minanang environment ng process ang nilalayong routing policy.

Kaugnay na mga artikulo