प्रमाणीकरणाशिवाय 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 निवडा.

संबंधित लेख