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 निवडा.