asyncio.gather מיט return_exceptions=True לייגט די אויסנאַמען פֿון די אויפֿגאַבעס אין זײַן רעזולטאַטן־ליסטע. דערפֿאַר מיינט וואַרטן אויפֿן פּאַק אָן אַן אויסנאַם נישט אַז יעדער פּראָקסי־באַקשה איז געראָטן.

האַלט דעם ציל און די אויסגעקליבענע פּראָקסי לעבן די אַרײַנגעגעבענע awaitables, און דערנאָך קוקט איבער יעדער רעזולטאַט:

outcomes = await asyncio.gather(*jobs, return_exceptions=True)

for (url, proxy), outcome in zip(routes, outcomes):
    if isinstance(outcome, BaseException):
        record_failure(url, proxy, outcome)
    else:
        record_success(url, proxy, outcome)

jobs האַלט די בקשה־קאָרוטינען פֿון דער אַפּליקאַציע; routes האַלט די צוגעהעריקע (url, proxy) פּאָרן אין דער זעלבער סדר. די פֿאַרשרייבונג־פֿונקציעס זענען די אַפּליקאַציעס אייגענע רעזולטאַטן־באַהאַנדלונג. gather האַלט דעם אַרײַנגאַנג־סדר אַפֿילו ווען דער פֿאַרענדיקונג־סדר איז אַנדערש.

קלאַסיפֿיצירט אַ צוריקגעגעבענעם CancelledError פֿון אַ קינד־אויפֿגאַבע ווי אַנולירונג אַנשטאָט באַשולדיקן איר פּראָקסי. די אַנולירונג פֿון דער פֿאַרקערטער gather פֿאַרשפּרייט זיך נאָך אַלץ צו אומפֿאַרענדיקטע קינדער; return_exceptions פֿאַרוואַנדלט נישט די אַנולירונג אין אַ געוויינטלעכן דערפֿאָלג.

די באַהאַנדלונג פֿון HTTP־סטאַטוס געהערט אויך אין דער בקשה־אָפּעראַציע. aiohttp וואַרפֿט נישט קיין אויסנאַם פֿאַר יעדער HTTP־טעות ביי פֿאַרזאַמלונג, דערפֿאַר גיט צוריק דעם סטאַטוס אָדער ניצט raise_for_status לויט דער פּאָליטיק פֿון דער אויפֿגאַבע.

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

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