HTTP проксиі арқылы бір aiohttp сұрауы
aiohttp арқылы аутентификациясыз HTTP прокси сұрауын жіберіп, күйін тексеріңіз де, анық асинхронды өмірлік циклде аяқтаңыз.
Аутентификациясыз 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 тек процестің мұраланған ортасы көзделген бағыттау саясаты болғанда таңдалуы керек.