asyncio.gather return_exceptions=True உடன் பணிகளின் விதிவிலக்குகளை அதன் முடிவுப் பட்டியலில் வைக்கிறது. எனவே எந்த விதிவிலக்கும் இல்லாமல் தொகுப்பைக் காத்திருப்பது ஒவ்வொரு ப்ராக்ஸி கோரிக்கையும் வெற்றி பெற்றது என்று பொருள் அல்ல.

சமர்ப்பித்த awaitable-களுக்கு அருகில் இலக்கையும் தேர்ந்தெடுத்த ப்ராக்ஸியையும் வைத்துக்கொண்டு, பின்னர் ஒவ்வொரு முடிவையும் ஆய்வு செய்யுங்கள்:

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-ஐப் பயன்படுத்துங்கள்.

முடிவுகள் தெரிந்ததும், பயன்பாடு இணைப்புத் தோல்விகளை இலக்கின் பதில்களிலிருந்து வேறுபடுத்தி, எந்த வேலைக்கு மற்றொரு முயற்சி தகுதி என்று முடிவு செய்ய முடியும்.

தொடர்புடைய கட்டுரைகள்