प्रत्येक aiohttp प्रॉक्सीला त्याचे स्वतःचे समवर्ती बजेट द्या
aiohttp कनेक्शन-पूल मर्यादा आणि प्रतिसाद साफसफाई टिकवून ठेवताना प्रत्येक निवडलेल्या प्रॉक्सीसाठी सुरू असलेले काम मर्यादित करा.
प्रॉक्सी पूलमध्ये खूप वेगवेगळ्या क्षमतेचे एंडपॉइंट असू शकतात. संपूर्ण अनुप्रयोगात पन्नास क्रियांना परवानगी देणे त्यांपैकी एकोणपन्नासला एकच प्रॉक्सी निवडण्यापासून रोखत नाही.
जर धोरण “प्रत्येक निवडलेल्या प्रॉक्सीमधून जास्तीत जास्त चार सुरू असलेल्या क्रिया” असेल, तर ते धोरण थेट व्यक्त करा. प्रत्येक प्रॉक्सी ओळखीसाठी सेमाफोर ठेवा आणि प्रॉक्सीची क्षमता वापरणाऱ्या कामाभोवती ते मिळवा.
limits = {proxy: asyncio.Semaphore(4) for proxy in proxy_urls}
async def fetch(session, proxy, url):
async with limits[proxy]:
async with session.get(url, proxy=proxy) as response:
return await response.read()हे रेखाटन गृहीत धरते की asyncio आयात केले आहे आणि प्रॉक्सी URL सत्यापित केले आहेत. अनुमत सार्वजनिक-प्रॉक्सी मार्गावरील सार्वजनिक विनंत्यांसाठी, HTTP प्रॉक्सी सूची aiohttp च्या प्रॉक्सी URL साठी उमेदवार पुरवते. वास्तविक अनुप्रयोगाने स्वतःची विनंती कालबाह्यता सेट केली पाहिजे आणि किती प्रतिसाद डेटा हवा आहे हे ठरवले पाहिजे. मोठी फाईल पूर्णपणे मेमरीत वाचणे हा एक वेगळा संसाधन निर्णय आहे.
महागाच्या भागासाठी परवानगी ठेवा
प्रतिसाद हेडर येताच सेमाफोर सोडल्यास इच्छित मर्यादा निष्फळ होऊ शकते. स्ट्रीमिंग बॉडी त्यानंतर बराच काळ कनेक्शन वापरत राहू शकते. बॉडी वापरली जाईपर्यंत किंवा अनुप्रयोगाच्या कार्यप्रवाहानुसार प्रतिसाद बंद होईपर्यंत परवानगी ठेवा.
नेस्टेड कॉन्टेक्स्ट मॅनेजर साफसफाई दृश्यमान करतात जेव्हा अपवाद किंवा रद्द करणे क्रिया सोडते. स्वतःहून मिळवणे आणि केवळ यशस्वी फंक्शनच्या तळाशी सोडणे टाळा.
कनेक्शन मर्यादा दुसऱ्या प्रश्नाचे उत्तर देतात
aiohttp च्या कनेक्टर मर्यादा कनेक्टरच्या दस्तऐवजीकृत नियमांनुसार कनेक्शन मर्यादित करतात. त्या अनुप्रयोग सेमाफोरसोबत उपयुक्त राहतात. प्रति-गंतव्य कनेक्शन मर्यादा केवळ तिच्या नावाने एका प्रॉक्सीला नेमलेल्या सर्व गंतव्यांनी सामायिक केलेले बजेट व्यक्त करत नाही.
समवर्तीता विनंती दरापासूनही वेगळी ओळखा. चार दीर्घायुषी विनंत्या आणि चार अतिशय लहान विनंत्या समान समवर्ती भत्ता वापरतात परंतु वेगवेगळे प्रति-सेकंद-विनंती दर निर्माण करतात. दर धोरण असलेल्या सेवेला गती नियंत्रण किंवा वेगळा दर मर्यादक लागू शकतो.
लॉग आणि मेट्रिक्ससाठी स्थिर, गुप्त नसलेला प्रॉक्सी ओळखकर्ता निवडा. जर दोन क्रेडेन्शियल असलेले URL एकाच क्षमता पूलाचा संदर्भ देत असतील, तर त्यांनी एक बजेट सामायिक करावे का ते ठरवा. उलटपक्षी, वेगवेगळे पोर्ट किंवा खाती वेगळ्या मर्यादा दर्शवू शकतात जेव्हा ऑपरेटर त्यांना तसे दस्तऐवजीकृत करतो.
जेव्हा थ्रूपुट घटते, तेव्हा काम कुठे वाट पाहत आहे ते तपासा: तुमचा सेमाफोर, कनेक्टर, प्रॉक्सी कनेक्शन सेटअप, किंवा प्रतिसाद वाचन. सर्व मर्यादा एकाच वेळी वाढवल्यास तो फरक करणे कठीण होते आणि रांग तुम्ही नियंत्रित न करणाऱ्या प्रॉक्सीकडे जाऊ शकते.