Scrapy പ്രോക്സി മിഡിൽവെയർ: Request, None എന്നിവയുടെ റിട്ടേൺ മൂല്യങ്ങൾ
Scrapy പ്രോക്സി നൽകിയ ശേഷം നിയന്ത്രണം തിരികെ നൽകുക; ഡൗൺലോഡ് ചെയ്യുന്നതിന് മുമ്പ് അതേ അഭ്യർത്ഥന അറിയാതെ വീണ്ടും ഷെഡ്യൂൾ ചെയ്യരുത്.
ലോഗിൽ പ്രോക്സി വിലാസം മാറുന്നു. ലക്ഷ്യസ്ഥാനം പ്രോക്സിയുടെ ആക്സസ് ലോഗിൽ ഒരിക്കലും പ്രത്യക്ഷപ്പെടുന്നില്ല. നിങ്ങളുടെ മിഡിൽവെയർ അഭ്യർത്ഥന ഡൗൺലോഡറിലേക്ക് എത്താൻ അനുവദിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക.
Scrapy-യുടെ ഡൗൺലോഡർ മിഡിൽവെയറിൽ Request തിരികെ നൽകുന്നത് ആ അഭ്യർത്ഥന വീണ്ടും ഷെഡ്യൂൾ ചെയ്യുന്നു എന്നാണ് അർത്ഥം. “ഇപ്പോൾ മാറ്റിയ മെറ്റാഡാറ്റയുമായി ഈ ഒബ്ജക്റ്റ് അയയ്ക്കുന്നത് തുടരുക” എന്നല്ല.
വഴി മാത്രം തിരഞ്ഞെടുക്കുന്ന സെലക്ടറിന് പ്രധാന രൂപം ഇതാണ്:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
ഈ ഭാഗം നിലവിലെ ഹുക്ക് രൂപം കാണിക്കുന്നു; ഇൻസ്റ്റാൾ ചെയ്ത Scrapy പതിപ്പ് പിന്തുണയ്ക്കുന്ന മിഡിൽവെയർ ഇന്റർഫേസ് ഉപയോഗിക്കുക. സെലക്ടർ സാധുവായ എൻഡ്പോയിന്റ് തിരികെ നൽകുകയും ലഭ്യമല്ലാത്ത പൂൾ വ്യക്തമായി കൈകാര്യം ചെയ്യുകയും വേണം. പൊതു മധ്യസ്ഥരെ അനുവദിക്കുന്ന പൊതു ക്രോൾ ആ റിട്ടേൺ മൂല്യത്തിനായി HTTP പ്രോക്സി പട്ടികയിൽ നിന്ന് HTTP സ്ഥാനാർത്ഥികളെ എടുക്കാം.
None തിരികെ നൽകിയാൽ ബാക്കി അഭ്യർത്ഥന മിഡിൽവെയറിനും ഡൗൺലോഡറിനും തുടരാം. മറ്റൊരു Request തിരികെ നൽകുന്നത് ജോലി ബോധപൂർവ്വം മാറ്റുമ്പോഴോ വീണ്ടും ശ്രമിക്കുമ്പോഴോ ഉപകാരപ്രദമാണ്, പക്ഷേ അതിന് കാരണവും പുറത്തുകടക്കാനുള്ള വ്യവസ്ഥയും വേണം.
ഓരോ തവണയും അതേ അഭ്യർത്ഥന തിരികെ നൽകുന്ന റോട്ടേറ്റർ ലക്ഷ്യസ്ഥാനവുമായി ഒരിക്കലും ബന്ധം സ്ഥാപിക്കാതെ തന്നെ അതിന്റെ തിരഞ്ഞെടുപ്പ് കോഡ് ആവർത്തിച്ച് പ്രവർത്തിപ്പിക്കാം. ടൈംഔട്ട് കൂട്ടുന്നതോ കൂടുതൽ പ്രോക്സി പോർട്ടുകൾ തുറക്കുന്നതോ ആ നിയന്ത്രണ-പ്രവാഹ ലൂപ്പ് പരിഹരിക്കില്ല.
മിഡിൽവെയർ പ്രവേശനം, റിട്ടേൺ സ്വഭാവം, ആദ്യത്തെ യഥാർത്ഥ നെറ്റ്വർക്ക് ശ്രമം എന്നിവ പ്രത്യേക സംഭവങ്ങളായി പരിശോധിക്കുക. “പ്രോക്സി തിരഞ്ഞെടുത്തു” എന്ന ലോഗ് വരി സെലക്ടർ പ്രവർത്തിച്ചു എന്ന് മാത്രം തെളിയിക്കുന്നു. തിരഞ്ഞെടുത്ത എൻഡ്പോയിന്റ് ഉപയോഗിച്ച് അഭ്യർത്ഥന അയച്ചു എന്ന് അത് തെളിയിക്കുന്നില്ല.