In Scrapy-GET opnij besykje fia in oare proxy
Brûk de werprobearhelper fan Scrapy om in nij fersyk mei in nije proxy te planjen, mei respect foar it werproazbudzjet.
response.request.meta feroarje feroaret in Python-objekt. Foar noch in download moat Scrapy in oare Request krije om te planjen.
Foar in GET dêr't jo callback eksplisyt beslút om it opnij te besykjen, kin de iepenbiere werprobearhelper fan Scrapy de werproazbookhâlding by it nije fersyk hâlde:
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
Dit is in spider-helper. De oanropper moat de resultearjende Request weromjaan of yieldje as der ien beskikber is. None betsjut dat de helper noch in werproaz ûnder de jildende limyt wegere.
De werprobearhelper kopiearret it fersyk, fernijt syn werproasteller en leveret it planner-gedrach dat by in werproaz past. Allinnich deselde URL yieldje as in gewoan nij fersyk kin ynstee op duplikaatfiltering stjitte.
Brûk in proxy-URL dy't troch de aktivearre HttpProxyMiddleware stipe wurdt. Foar werproazen fan tasteane iepenbiere GET-fersiken kin in net-autentisearre HTTP-kandidaat út 'e HTTP-proxylist proxy_url leverje. It wiskjen fan in earder tafoege proxy-authorization-fjild foarkomt dat de kop fan in âlde tuskenpersoan yn dizze seleksje bedarret; lit de middleware it nije akkount ôfliede fan 'e nije proxy-URL as dat fan tapassing is.
Hâld dizze kar op callback-nivo skieden fan 'e automatyske ôfhanneling fan RetryMiddleware fan syn konfigurearre mislearrings. Bepaal hokker laach de werproaz besit, sadat de operaasje net twa ûnôfhinklike budzjetten brûkt. It foarbyld giet oer werhellber GET-wurk, net oer de belofte dat it werheljen fan in willekeurige yntsjinne transaksje feilich is.