Մեկ aiohttp հարցում HTTP պրոքսիով
aiohttp-ով հարցում ուղարկեք HTTP պրոքսիով առանց նույնականացման, ստուգեք վիճակը և ավարտեք հստակ ասինխրոն կենսաշրջանում։
Առանց նույնականացման HTTP պրոքսիով մեկ ասինխրոն հարցման համար երթուղին պահեք session.get()-ում։ Անհրաժեշտության դեպքում նախագծին ավելացրեք aiohttp․
uv add aiohttpՍտորև փաստաթղթային հասցեն փոխարինեք ձեր HTTP լսող վերջնակետով կամ HTTP պրոքսիների ցանկի թեկնածուով։ Այն պետք է թույլ տա CONNECT դեպի HTTPS նպատակակետը․ միայն 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 ընտրեք միայն երբ գործընթացի ժառանգած միջավայրը նախատեսված երթուղավորման քաղաքականությունն է։