Middleware tal-proxy ta' Scrapy: valuri tar-ritorn Request kontra None
Irritorna l-kontroll wara li tassenja proxy ta' Scrapy minflok ma terġa' tiskeda l-istess talba b'mod mhux intenzjonat qabel ma tniżżilha.
L-indirizz tal-proxy jinbidel fil-log. Id-destinazzjoni qatt ma tidher fil-log tal-aċċess tal-proxy. Iċċekkja jekk il-middleware tiegħek hux qed iħalli t-talba tasal għand id-downloader.
Fil-middleware tad-downloader ta' Scrapy, li tirritorna Request tfisser li terġa' tiskeda dik it-talba. Ma tfissirx “kompli ibgħat dan l-oġġett bil-metadata li għadek kif biddilt”.
Għal selettur li jagħżel biss rotta, il-forma importanti hi:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Dan il-framment juri l-forma attwali tal-hook; uża l-interface tal-middleware li tappoġġja l-verżjoni ta' Scrapy installata. Is-selettur irid jirritorna punt tat-tmiem validu u jittratta b'mod espliċitu pool mhux disponibbli. Crawl pubbliku li jippermetti intermedjarji pubbliċi jista' jiġbed kandidati HTTP mil-lista tal-proxy HTTP għal dak il-valur tar-ritorn.
Li tirritorna None iħalli l-bqija tal-middleware tat-talbiet u d-downloader jipproċedu. Li tirritorna Request ieħor hu utli meta intenzjonalment tissostitwixxi jew terġa' tipprova xogħol, iżda jeħtieġ raġuni u kundizzjoni tal-ħruġ.
Rotatur li jirritorna l-istess talba kull darba jista' jmexxi ripetutament il-kodiċi tal-għażla tiegħu mingħajr qatt ma jagħmel konnessjoni mad-destinazzjoni. Iż-żieda tat-timeouts jew il-ftuħ ta' aktar portijiet tal-proxy ma jistgħux isewwu dak iċ-ċiklu tal-fluss tal-kontroll.
Eżamina d-dħul fil-middleware, l-imġiba tar-ritorn u l-ewwel tentattiv reali tan-netwerk bħala avvenimenti separati. Linja tal-log li tgħid “proxy magħżul” tipprova biss li s-selettur tħaddem. Ma tipprovax li ntbghatet talba bil-punt tat-tmiem magħżul.