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 तभी चुनें जब प्रक्रिया को विरासत में मिला पर्यावरण ही इच्छित राउटिंग नीति हो।