Tun gbiyanju GET Scrapy kan nipasẹ proxy miiran
Lo oluranlọwọ igbiyanju-tun ti Scrapy lati ṣeto ibeere tuntun pẹlu proxy tuntun lakoko ti o bọwọ fun isuna igbiyanju-tun.
Yiyipada response.request.meta yipada ohun Python kan. Lati ṣe igbasilẹ miiran, o gbọdọ fun Scrapy ni Request miiran lati ṣeto.
Fun GET ti callback rẹ pinnu ni gbangba lati tun gbiyanju, oluranlọwọ igbiyanju-tun ti gbogbo eniyan ti Scrapy le tọju iṣiro igbiyanju-tun pẹlu ibeere tuntun naa:
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
Eyi jẹ oluranlọwọ spider. Ẹniti o pe gbọdọ da Request ti o yọrisi pada tabi yield rẹ nigbati ọkan ba wa. None tumọ si pe oluranlọwọ kọ igbiyanju-tun miiran labẹ opin ti o wulo.
Oluranlọwọ igbiyanju-tun daakọ ibeere naa, ṣe imudojuiwọn iye igbiyanju-tun rẹ ati pese ihuwasi oluṣeto ti o yẹ fun igbiyanju-tun. Gbigbe URL kanna yield gẹgẹbi ibeere tuntun lasan le dipo pade sisẹ ẹda.
Lo URL proxy ti HttpProxyMiddleware ti o muu ṣiṣẹ ṣe atilẹyin. Fun awọn igbiyanju-tun ti awọn ibeere GET gbangba ti a gba laaye, oludije HTTP ti ko ni ijẹrisi lati akojọ proxy HTTP le pese proxy_url. Piparẹ aaye proxy-authorization ti a so tẹlẹ yago fun gbigbe ori alarinrin atijọ sinu yiyan yii; jẹ ki middleware yọ akọọlẹ tuntun lati URL proxy tuntun nigbati o ba yẹ.
Ya yiyan ipele callback yii sọtọ si itọju adaṣe ti RetryMiddleware fun awọn ikuna ti a ti ṣeto rẹ. Pinnu iru Layer ti o ni igbiyanju-tun ki iṣẹ naa ma lo isuna meji ominira. Apẹẹrẹ naa jẹ nipa iṣẹ GET ti o le tun ṣe, kii ṣe ileri pe atunwi iṣowo ti a fi silẹ lainidi jẹ ailewu.