Առանց նույնականացման 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 ընտրեք միայն երբ գործընթացի ժառանգած միջավայրը նախատեսված երթուղավորման քաղաքականությունն է։

Առնչվող հոդվածներ