ब्लॉकिंग प्रॉक्सी-पूल लुकअप Scrapy ला थांबवू शकते
Scrapy च्या इव्हेंट-लूप मार्गाबाहेर सिंक्रोनस प्रॉक्सी-पूल API कॉल ठेवा आणि एंडपॉइंट शोधण्याला स्वतःचे अपयश धोरण द्या.
क्रॉलरमध्ये पुरेशी एकाचवेळी विनंत्या कॉन्फिगर केलेल्या आहेत. तरीही जेव्हा तो प्रॉक्सी पूलला दुसरा पत्ता विचारतो तेव्हा थांबतो. अधिक प्रॉक्सी जोडल्याने त्या थांब्यावर परिणाम होत नाही.
एक सामान्य मिडलवेअर पॅटर्न requests.get(pool_url) ला process_request() मध्ये कॉल करतो. हे अशा मार्गावरील सिंक्रोनस नेटवर्क ऑपरेशन आहे ज्याने Scrapy च्या असिंक्रोनस इंजिनशी सहकार्य करायचे असते. कॉल प्रतीक्षा करत असताना तो त्याच इव्हेंट-लूप थ्रेडवरील असंबंधित काम रोखू शकतो.
कामात दोन विनंत्या आहेत
एक विनंती पूल सेवेकडून एंडपॉइंट मिळवते. दुसरी त्या एंडपॉइंटचा वापर गंतव्याशी संपर्क साधण्यासाठी करते. दोन्ही स्वतंत्रपणे मोजा आणि त्यांचा अहवाल द्या. संथ पूल API अॅप्लिकेशन जोडण्यापूर्वीच प्रत्येक निवडलेली प्रॉक्सी संथ दिसू शकते.
इंस्टॉल केलेल्या Scrapy आवृत्तीद्वारे समर्थित असिंक्रोनस शोध एकत्रीकरण वापरा, किंवा प्रत्येक विनंतीच्या गंभीर मार्गाबाहेर मर्यादित स्थानिक एंडपॉइंट संच मिळवा आणि ताजा ठेवा. ब्लॉकिंग काम हलवावे लागल्यास त्या एक्झिक्युटरला स्वतःच्या मर्यादा आणि टाइमआउट हाताळणी द्या; अमर्यादित रांग फक्त विलंबाची जागा बदलते.
प्रत्येक विनंतीसाठी स्वयंचलितपणे आणखी एक शोध कॉल करू नका. अल्पकालीन कॅशे किंवा भाड्याने घेतलेली बॅच सेवेच्या वास्तविक एंडपॉइंट धोरणाशी जुळल्यास पूल सेवेवरील अवलंबित्व कमी करू शकते.
अयशस्वी लुकअपचा अर्थ ठरवा
रिकामा किंवा अयशस्वी पूल प्रतिसादाने प्रॉक्सी मेटाडेटा गुपचूप काढून थेट विनंतीला परवानगी देऊ नये. स्पष्ट परिणाम निवडा: कामाच्या बजेटमध्ये प्रतीक्षा करणे, अयशस्वी होणे, किंवा मंजूर कॅशे केलेला एंडपॉइंट वापरणे.
पूल API चा स्वतःचा मार्गही मोकळा ठेवा. ती अंतर्गत सेवा असल्यास तिचे खाजगी होस्टनाव ती निवडण्यास मदत करणाऱ्या त्याच प्रॉक्सीमधून पाठवल्यास चक्रीय अवलंबित्व निर्माण होऊ शकते.
शोध असंबंधित काम न रोखता काम करू लागल्यावर सामान्य प्रॉक्सी व्यवहार तपासा. हे स्वतंत्र दुरुस्त्या आहेत आणि त्यांच्या वेळेला लॉगमध्ये स्वतंत्र फील्ड हवे आहेत.