ప్రామాణీకరణలేని 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 ఎంచుకోండి.

సంబంధిత వ్యాసాలు