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.

Àwọn àpilẹ̀kọ tó jọra