Scrapy ప్రాక్సీ మిడిల్వేర్: Request మరియు None రిటర్న్ విలువలు
Scrapy ప్రాక్సీని కేటాయించిన తర్వాత నియంత్రణను తిరిగి ఇవ్వండి; డౌన్లోడ్ చేయడానికి ముందు అదే అభ్యర్థనను అనుకోకుండా మళ్లీ షెడ్యూల్ చేయకండి.
లాగ్లో ప్రాక్సీ చిరునామా మారుతుంది. గమ్యం ప్రాక్సీ యాక్సెస్ లాగ్లో ఎప్పుడూ కనిపించదు. మీ మిడిల్వేర్ అభ్యర్థనను డౌన్లోడర్ వరకు అనుమతిస్తుందో లేదో తనిఖీ చేయండి.
Scrapy డౌన్లోడర్ మిడిల్వేర్లో Requestని తిరిగి ఇవ్వడం అంటే ఆ అభ్యర్థనను మళ్లీ షెడ్యూల్ చేయడం. “నేను ఇప్పుడే మార్చిన మెటాడేటాతో ఈ ఆబ్జెక్ట్ను పంపడం కొనసాగించు” అని అర్థం కాదు.
మార్గాన్ని మాత్రమే ఎంచుకునే సెలెక్టర్కు ముఖ్యమైన రూపం:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
ఈ భాగం ప్రస్తుత హుక్ రూపాన్ని చూపుతుంది; ఇన్స్టాల్ చేసిన Scrapy విడుదల మద్దతు ఇచ్చే మిడిల్వేర్ ఇంటర్ఫేస్ను ఉపయోగించండి. సెలెక్టర్ చెల్లుబాటు అయ్యే ముగింపు బిందువును తిరిగి ఇవ్వాలి మరియు అందుబాటులో లేని పూల్ను స్పష్టంగా నిర్వహించాలి. ప్రజా మధ్యవర్తులను అనుమతించే ప్రజా క్రాల్ ఆ రిటర్న్ విలువ కోసం HTTP ప్రాక్సీ జాబితా నుండి HTTP అభ్యర్థులను తీసుకోవచ్చు.
None తిరిగి ఇవ్వడం మిగిలిన అభ్యర్థన మిడిల్వేర్ మరియు డౌన్లోడర్ కొనసాగడానికి అనుమతిస్తుంది. మరో Request తిరిగి ఇవ్వడం పనిని ఉద్దేశపూర్వకంగా భర్తీ చేసినప్పుడు లేదా మళ్లీ ప్రయత్నించినప్పుడు ఉపయోగపడుతుంది, కానీ దానికి కారణం మరియు నిష్క్రమణ షరతు అవసరం.
ప్రతిసారీ అదే అభ్యర్థనను తిరిగి ఇచ్చే రొటేటర్ గమ్యంతో ఎప్పుడూ కనెక్షన్ ఏర్పాటు చేయకుండా తన ఎంపిక కోడ్ను పదేపదే అమలు చేయగలదు. టైమ్అవుట్లను పెంచడం లేదా ఎక్కువ ప్రాక్సీ పోర్టులను తెరవడం ఆ నియంత్రణ-ప్రవాహ లూప్ను సరిచేయలేదు.
మిడిల్వేర్ ప్రవేశం, రిటర్న్ ప్రవర్తన మరియు మొదటి వాస్తవ నెట్వర్క్ ప్రయత్నాన్ని వేర్వేరు సంఘటనలుగా పరిశీలించండి. “ప్రాక్సీ ఎంపికైంది” అనే లాగ్ లైన్ సెలెక్టర్ నడిచిందని మాత్రమే రుజువు చేస్తుంది. ఎంపిక చేసిన ముగింపు బిందువుతో అభ్యర్థన పంపబడిందని రుజువు చేయదు.