asyncio.gather ৰ সৈতে বিফল প্ৰক্সী অনুৰোধ পৰিচালনা কৰা
asyncio.gather-এ ঘূৰাই দিয়া ব্যতিক্ৰমসমূহ পৰীক্ষা কৰক আৰু প্ৰতিটো ফলাফল নিৰ্বাচিত প্ৰক্সীৰ সৈতে সংযুক্ত ৰাখক।
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 ত্ৰুটিৰ বাবে exception নুঠায়, সেয়েহে স্থিতি ঘূৰাই দিয়ক বা কাৰ্যৰ নীতি অনুসৰি raise_for_status প্ৰয়োগ কৰক।
ফলাফলসমূহ দৃশ্যমান হ'লে এপ্লিকেশ্যই সংযোগ বিফলতা আৰু গন্তব্যৰ সঁহাৰিৰ মাজত পাৰ্থক্য কৰিব পাৰে আৰু কোনটো কাৰ্যই পুনৰ চেষ্টাৰ যোগ্য সেইটো নিৰ্ধাৰণ কৰিব পাৰে।