E Scrapy-GET iwwer en anere Proxy nach eng Kéier probéieren
Benotzt dem Scrapy säin Neiversuch-Helfer, fir eng nei Ufro mat engem neie Proxy ze plangen, an deemools de Neiversuch-Budget ze respektéieren.
response.request.meta z'änneren ännert en Python-Objekt. Fir nach en Download ze maachen, muss een dem Scrapy eng aner Request ginn, déi ee plangt.
Fir eng GET, déi Ären Callback ausdrécklech decidéiert nach eng Kéier ze probéieren, kann dem Scrapy säin ëffentlechen Neiversuch-Helfer d'Neiversuch-Rechnung bei der neier Ufro halen:
from scrapy.downloadermiddlewares.retry import get_retry_request
def retry_through(self, response, proxy_url):
retry = get_retry_request(
response.request,
spider=self,
reason='choose_another_proxy',
)
if retry is None:
return None
retry.meta['proxy'] = proxy_url
retry.headers.pop('Proxy-Authorization', None)
return retry
Dëst ass en Spider-Helfer. Den Opruffer muss déi entstane Request zréckginn oder yielden, wann eng verfügbar ass. None bedeit, datt den Helfer nach en Neiversuch ënner dem gëltege Limit ofgelehnt huet.
Den Neiversuch-Helfer kopéiert d'Ufro, aktualiséiert hiren Neiversuch-Zähler a liwwert d'Verhalen vum Planer, dat fir en Neiversuch passt. Just déiselwecht URL als gewéinlech nei Ufro ze yielden, kann dogéint op d'Duplikatfilterung stoussen.
Benotzt eng Proxy-URL, déi déi aktivéiert HttpProxyMiddleware ënnerstëtzt. Fir Neiversich vun erlaabten ëffentlechen GET-Ufroen kann en net-authentifizéierte HTTP-Kandidat aus der HTTP-Proxy-Lëscht proxy_url liwweren. E virdrun ugehaangent proxy-authorization-Feld ze läschen, verhënnert, datt den Header vun engem ale Vermëttler an dës Auswiel geréit; loosst de Middleware de neien Kont aus der neier Proxy-URL ofleeden, wann dat zoutrëfft.
Halt dës Auswiel op Callback-Niveau getrennt vun der automatescher Behandlung vun de konfiguréierte Feeler duerch RetryMiddleware. Entscheet, wéi eng Schicht den Neiversuch besëtzt, sou datt d'Operatioun net zwee onofhängeg Budgete verbraucht. D'Beispill geet ëm erëmspillbar GET-Aarbecht, net ëm d'Versprieche, datt d'Widderhuele vun enger arbiträrer agereechter Transaktioun sécher ass.