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

from contextlib import contextmanager
from queue import Queue

available = Queue()
for endpoint in dict.fromkeys(proxy_urls):
    available.put(endpoint)

@contextmanager
def borrow_proxy():
    endpoint = available.get(timeout=5)
    try:
        yield endpoint
    finally:
        available.put(endpoint)

def process_url(url):
    with borrow_proxy() as endpoint:
        return fetch_one(url, endpoint)

בויט די רייע איין מאָל, פֿאַר דעם וואָס די אַרבעטספֿעדעם הייבן אָן. proxy_urls אַנטהאַלט פֿולע endpoint URLEN. פּובליקע קאַנדידאַטן זענען פֿאַראַן אין דער ליסטע פֿון בחינם פּראָקסיס; ניצט דעם פּראָטאָקאָל און URL פֿאָרמאַט וואָס fetch_one שטיצט. די פֿאַראַנענע סינכראָנע fetch_one פֿונקציע מוז פֿאַרענדיקן איר נעצווערק־אָפּעראַציע און פֿאַרמאַכן יעדער ענטפֿער פֿאַר דעם וואָס זי קומט צוריק. אַנדערש וואָלט די באָרג געענדיקט ווען די פֿאַרבינדונג ניצט נאָך דעם פּראָקסי.

Queue.get נעמט אַוועק איין פֿאַראַנענע איינס אַטאָמיש. אַ פּוסטער באַסיין וואַרט אַנשטאָט איבערצוכאַפּן געמיינזאַמע פֿענדלעך ווידער און ווידער. אויב קיין איינס קומט נישט אָן אין פֿינף סעקונדעס, דערגרייכט queue.Empty דעם רופֿער; קלייבט די פּאָליטיק פֿון ווידער־פּרוּוון, דורכפֿאַל אָדער אָפּזאָגן פֿאַר דעם רעזולטאַט.

דער finally בלאָק גיט צוריק אַן איינס וואָס איז דערלאַנגט געוואָרן נאָך הצלחה אָדער אויסנאַם. ער דערקלערט נישט אַז אַ דורכגעפֿאַלענער endpoint איז געזונט. קאַראַנטין־, פֿאַרבייַט־ און אָפּקילונג־פּאָליטיקעס דאַרפֿן אַ קלאָרן וועג אַנשטאָט שטילערהייט אַוועקוואַרפֿן יעדן פּראָקסי וואָס זעט אַ פֿאַרבייגייאיקער טעות.

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

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