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 ପ୍ରୟୋଗ କରନ୍ତୁ।

ଫଳାଫଳ ଦୃଶ୍ୟମାନ ହେବା ପରେ ଆପ୍ଲିକେସନ ସଂଯୋଗ ବିଫଳତାକୁ ଗନ୍ତବ୍ୟର ପ୍ରତିକ୍ରିୟାରୁ ଅଲଗା କରିପାରେ ଏବଂ କେଉଁ କାର୍ଯ୍ୟ ଆଉ ଏକ ପ୍ରୟାସର ଯୋଗ୍ୟ ତାହା ନିର୍ଣ୍ଣୟ କରିପାରେ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ