asyncio.gather ഉപയോഗിച്ച് പരാജയപ്പെട്ട പ്രോക്സി അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യൽ
asyncio.gather തിരികെ നൽകുന്ന ഒഴിവാക്കലുകൾ പരിശോധിക്കുകയും ഓരോ ഫലവും തിരഞ്ഞെടുത്ത പ്രോക്സിയുമായി ബന്ധിപ്പിച്ച് നിർത്തുകയും ചെയ്യുക.
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 പ്രയോഗിക്കുക.
ഫലങ്ങൾ കാണാവുന്നതായാൽ ആപ്ലിക്കേഷന് കണക്ഷൻ പരാജയങ്ങളെ ലക്ഷ്യസ്ഥാനത്തിന്റെ പ്രതികരണങ്ങളിൽ നിന്ന് വേർതിരിച്ചറിയാനും ഏത് ജോലിക്ക് മറ്റൊരു ശ്രമം അർഹതയുണ്ടെന്ന് തീരുമാനിക്കാനും കഴിയും.