Pre jednu asynchrónnu požiadavku cez HTTP proxy bez overovania ponechajte trasu pri session.get(). Podľa potreby pridajte aiohttp do projektu:

uv add aiohttp

Dokumentačnú adresu nižšie nahraďte svojím počúvajúcim HTTP bodom alebo kandidátom zo zoznamu HTTP proxy. Musí povoľovať CONNECT k cieľu HTTPS; koncový bod podporujúci len SOCKS potrebuje vhodný konektor namiesto tohto argumentu 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())

Požiadavka vypíše svoj stav HTTP a prvých 200 znakov textu odpovede. Stav 403 alebo 429 tu zostáva odpoveďou, ktorú možno prezrieť; volajte response.raise_for_status(), ak má aplikácia meniť neúspešné stavy na výnimky. Asynchrónni správcovia kontextu zatvoria reláciu a odpoveď po skončení blokov, aj pri výnimke.

Rozpočet total v dĺžke 15 sekúnd pokrýva operáciu požiadavky. Rozpočet connect v dĺžke 5 sekúnd zahŕňa čakanie na voľné spojenie z poolu, takže vyťažený pool ho môže minúť pred otvorením nového socketu. Toto rozlíšenie je dôležité pri úprave jedného volania na súbežné kontroly.

trust_env=False ponecháva zobrazenú trasu explicitnú. aiohttp predvolene nevyhľadáva proxy premenné prostredia; exportovanie premennej v inom termináli toto volanie nenastaví. trust_env=True voľte iba vtedy, keď zdedené prostredie procesu predstavuje zamýšľané smerovacie pravidlá.

Súvisiace články