Scrapy प्रॉक्सी मिडलवेयर: Request बनाम None रिटर्न मान
Scrapy प्रॉक्सी निर्दिष्ट करने के बाद नियंत्रण लौटाएँ, डाउनलोड से पहले उसी अनुरोध को अनजाने में फिर से शेड्यूल करने के बजाय।
लॉग में प्रॉक्सी पता बदलता है। गंतव्य प्रॉक्सी के एक्सेस लॉग में कभी नहीं दिखता। जाँचें कि क्या आपका मिडलवेयर अनुरोध को डाउनलोडर तक पहुँचने ही देता है।
Scrapy के डाउनलोडर मिडलवेयर में Request लौटाने का अर्थ उस अनुरोध को फिर से शेड्यूल करना है। इसका अर्थ यह नहीं है कि “अभी बदले गए मेटाडेटा के साथ यह ऑब्जेक्ट भेजना जारी रखें”।
केवल एक मार्ग चुनने वाले सिलेक्टर के लिए महत्वपूर्ण रूप यह है:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
यह अंश वर्तमान हुक रूप दिखाता है; इंस्टॉल किए गए Scrapy संस्करण द्वारा समर्थित मिडलवेयर इंटरफ़ेस का उपयोग करें। सिलेक्टर को वैध एंडपॉइंट लौटाना चाहिए और अनुपलब्ध पूल को स्पष्ट रूप से संभालना चाहिए। सार्वजनिक मध्यस्थों की अनुमति देने वाला सार्वजनिक क्रॉल उस रिटर्न मान के लिए HTTP प्रॉक्सी सूची से HTTP उम्मीदवार ले सकता है।
None लौटाने से शेष अनुरोध मिडलवेयर और डाउनलोडर आगे बढ़ सकते हैं। दूसरा Request लौटाना तब उपयोगी है जब आप जानबूझकर काम बदलते हैं या फिर से प्रयास करते हैं, लेकिन इसके लिए कारण और निकास शर्त चाहिए।
हर बार वही अनुरोध लौटाने वाला रोटेटर कभी गंतव्य से कनेक्शन किए बिना अपना चयन कोड बार-बार चला सकता है। टाइमआउट बढ़ाना या अधिक प्रॉक्सी पोर्ट खोलना उस नियंत्रण-प्रवाह लूप को ठीक नहीं कर सकता।
मिडलवेयर प्रवेश, रिटर्न व्यवहार और पहले वास्तविक नेटवर्क प्रयास को अलग-अलग घटनाओं के रूप में देखें। “प्रॉक्सी चुना गया” कहने वाली लॉग पंक्ति केवल यह सिद्ध करती है कि सिलेक्टर चला। यह सिद्ध नहीं करती कि चुने गए एंडपॉइंट के साथ अनुरोध भेजा गया।