HTTP ప్రాక్సీ ద్వారా ఒక aiohttp అభ్యర్థన
ప్రామాణీకరణలేని HTTP ప్రాక్సీతో aiohttp అభ్యర్థన పంపి, స్థితి చూసి స్పష్టమైన అసింక్రోనస్ జీవనచక్రంలో ముగించండి.
ప్రామాణీకరణలేని 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 ఎంచుకోండి.