Por unu nesinkrona peto tra neaŭtentikigita HTTP-prokurilo, tenu la vojon ĉe session.get(). Aldonu aiohttp al la projekto se necese:

uv add aiohttp

Anstataŭigu la suban dokumentadan adreson per via HTTP-aŭskultilo aŭ kandidato el la listo de HTTP-prokuriloj. Ĝi devas permesi CONNECT al la HTTPS-celo; nur-SOCKS-finpunkto bezonas taŭgan konektilon anstataŭ ĉi tiun argumenton 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 peto eligas sian HTTP-staton kaj la unuajn 200 signojn de la respondoteksto. 403 aŭ 429 restas inspektebla respondo ĉi tie; voku response.raise_for_status() se via aplikaĵo devas transformi malsukcesajn statojn en esceptojn. La nesinkronaj kuntekstmastrumiloj fermas la seancon kaj respondon kiam iliaj blokoj finiĝas, ankaŭ ĉe escepto.

La 15-sekunda buĝeto total kovras la petoperacion. La 5-sekunda buĝeto connect inkluzivas atendadon por disponebla konekto el la konektaro, do okupita konektaro povas elĉerpi ĝin antaŭ ol nova ingo malfermiĝas. Tiu distingo gravas kiam oni adaptas la ununuran vokon al samtempaj kontroloj.

trust_env=False tenas la montritan vojon eksplicita. aiohttp ne malkovras prokurilajn mediovariablojn defaŭlte; eksporti unu en alia terminalo ne agordos ĉi tiun vokon. Elektu trust_env=True nur kiam la heredita medio de la procezo estas la celita vojiga politiko.

Rilataj artikoloj