פֿערענדערן response.request.meta פֿערענדערט אַ Python אָביעקט. צו מאַכן נאָך אַ אַראָפּלאָדונג, דאַרף מען געבן Scrapy נאָך אַ Request צו פּלאַנירן.

פֿאַר אַ GET וואָס דער callback באַשליסט קלאָר אים ווידער פּרוּוון, קען Scrapy'ס פּובליק ווידער־פּרוּוון העלפּער האַלטן די ווידער־פּרוּוון חשבון מיט דער נײַער בקשה:

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

דאָס איז אַ spider העלפּער. דער רופֿער מוז צוריקקערן אָדער yield דעם רעזולטאַט Request ווען איינער איז פֿאַראַן. None באַדײַט אַז דער העלפּער האָט אָפּגעזאָגט נאָך אַ ווידער־פּרוּוון אין דער באַגרענעצונג.

דער ווידער־פּרוּוון העלפּער קאָפּירט די בקשה, דערהײַנטיקט דעם ווידער־פּרוּוון ציילער און שטעלט צו דאָס פּאַסיקע פּלאַנירער פֿאַרהאַלטן פֿאַר אַ ווידער־פּרוּוון. בלויז yield דעם זעלבן URL ווי אַ געוויינטלעכע נײַע בקשה קען אַנשטאָט באַגעגענען דופּליקאַט פֿילטערונג.

ניצט אַ פּראָקסי URL וואָס דער אַקטיווירטער HttpProxyMiddleware שטיצט. פֿאַר ווידער־פּרוּוון פֿון דערלויבטע פּובליקע GET בקשות קען אַ נישט־אויטענטיפֿיצירטער HTTP קאַנדידאַט פֿון דער HTTP פּראָקסי ליסטע צושטעלן proxy_url. אויסמעקן אַ פֿריִער צוגעהאַנגענעם proxy-authorization פֿעלד פֿאַרמיידט אַריבערפירן אַן אַלטער מיטלמאַנס קעפּל אין דער דאָזיקער אויסוואַל; לאָזט דעם מידלווער אָפּליייען דעם נײַעם חשבון פֿון דעם נײַעם פּראָקסי URL ווען עס פּאַסט.

האַלט די דאָזיקע אויסוואַל אויף callback־מדרגה באַזונדער פֿון RetryMiddleware'ס אויטאָמאַטישער באַהאַנדלונג פֿון זײַנע קאָנפֿיגורירטע דורכפֿאַלן. באַשליסט וועלכער שיכט באַזיצט דעם ווידער־פּרוּוון, כּדי די אָפּעראַציע זאָל נישט פֿאַרנוצן צוויי אומאָהענגיקע בודזשעטן. דאָס ביישפּיל באַטרעפֿט איבערשפּילבאַרע GET אַרבעט, נישט אַ צוזאָג אַז איבערחזרן אַן אַרביטראַריש געשיקטע טראַנזאַקציע איז זיכער.

פֿאַרבונדענע אַרטיקלען