Pro jeden asynchronní požadavek přes HTTP proxy bez ověřování ponechte trasu u session.get(). Podle potřeby přidejte aiohttp do projektu:

uv add aiohttp

Dokumentační adresu níže nahraďte svým naslouchajícím HTTP bodem nebo kandidátem ze seznamu HTTP proxy. Musí povolovat CONNECT k cíli HTTPS; koncový bod podporující jen SOCKS potřebuje vhodný konektor místo tohoto 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žadavek vypíše svůj stav HTTP a prvních 200 znaků textu odpovědi. Stav 403 nebo 429 zde zůstává odpovědí, kterou lze prohlédnout; volejte response.raise_for_status(), má-li aplikace převádět neúspěšné stavy na výjimky. Asynchronní správci kontextu zavřou relaci a odpověď po skončení bloků, i při výjimce.

Rozpočet total na 15 sekund pokrývá operaci požadavku. Rozpočet connect na 5 sekund zahrnuje čekání na volné spojení z poolu, takže vytížený pool jej může vyčerpat před otevřením nového socketu. Toto rozlišení je důležité při úpravě jediného volání na souběžné kontroly.

trust_env=False ponechává zobrazenou trasu explicitní. aiohttp ve výchozím stavu nevyhledává proxy proměnné prostředí; exportování proměnné v jiném terminálu toto volání nenastaví. trust_env=True volte pouze tehdy, když zděděné prostředí procesu představuje zamýšlená směrovací pravidla.

Související články