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 छान्नुहोस्।