Текшерүүсүз HTTP прокси аркылуу бир асинхрондуу сурам үчүн жолду session.get() жеринде кармаңыз. Керек болсо долбоорго aiohttp кошуңуз:

uv add aiohttp

Төмөнкү документтик даректи өз HTTP угуучуңузга же HTTP проксилердин тизмесиндеги талапкерге алмаштырыңыз. Ал HTTPS багытына CONNECT уруксат бериши керек; SOCKS гана колдогон чекитке бул 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())

Сурам HTTP абалын жана жооп текстинин алгачкы 200 белгисин чыгарат. 403 же 429 бул жерде текшерүүгө боло турган жооп бойдон калат; колдонмо ийгиликсиз абалдарды өзгөчө учурга айлантышы керек болсо response.raise_for_status() чакырыңыз. Асинхрондуу контекст башкаргычтары блоктор бүткөндө, өзгөчө учур болсо да, сессияны жана жоопту жабат.

15 секунддук total бюджети сурам аракетин камтыйт. 5 секунддук connect бюджетине пулдан жеткиликтүү туташуу күтүү да кирет, ошондуктан бош эмес пул аны жаңы сокет ачылганга чейин коротушу мүмкүн. Бир чакырууну бир убактагы текшерүүлөргө ылайыктоодо бул айырма маанилүү.

trust_env=False көрсөтүлгөн жолду ачык кармайт. aiohttp демейкиде прокси чөйрө өзгөрмөлөрүн таппайт; башка терминалда бирөөнү экспорттоо бул чакырууну жөндөбөйт. trust_env=True процесс мураска алган чөйрө көздөлгөн багыттоо саясаты болгондо гана тандалышы керек.

Тектеш макалалар