আমার পোস্ট করা বেশিরভাগ উত্তর নিয়ে আমার প্রচুর সমস্যা রয়েছে - তারা হয় সীমিত বৈশিষ্ট্য সহ নমনীয় গ্রন্থাগারগুলি ব্যবহার করেন বা অনুরোধটি কার্যকর করার ক্ষেত্রে খুব বেশি যাদু নিয়ে একটি সমাধান সরবরাহ করে, যাতে ত্রুটি পরিচালনা করতে সমস্যা হয়। যদি তারা উপরের কোনও বিভাগে না পড়ে তবে তারা তৃতীয় পক্ষের লাইব্রেরি বা অবনমিত হয়।
কিছু সমাধান HTTP অনুরোধগুলিতে খাঁটিভাবে কাজ করে, তবে সমাধান অন্য কোনও অনুরোধের জন্য সংক্ষিপ্ত হয়ে পড়ে, যা হাস্যকর। একটি অত্যন্ত কাস্টমাইজড সমাধান এখানে প্রয়োজন হয় না।
কেবলমাত্র পাইথন অন্তর্নির্মিত লাইব্রেরি ব্যবহার করা asyncio
যেকোন প্রকারের অ্যাসিনক্রোনাস অনুরোধ সম্পাদন করার পাশাপাশি জটিল এবং ইউজকেস নির্দিষ্ট ত্রুটি পরিচালনার জন্য পর্যাপ্ত তরলতা সরবরাহ করার জন্য যথেষ্ট।
import asyncio
loop = asyncio.get_event_loop()
def do_thing(params):
async def get_rpc_info_and_do_chores(id):
# do things
response = perform_grpc_call(id)
do_chores(response)
async def get_httpapi_info_and_do_chores(id):
# do things
response = requests.get(URL)
do_chores(response)
async_tasks = []
for element in list(params.list_of_things):
async_tasks.append(loop.create_task(get_chan_info_and_do_chores(id)))
async_tasks.append(loop.create_task(get_httpapi_info_and_do_chores(ch_id)))
loop.run_until_complete(asyncio.gather(*async_tasks))
এটি কীভাবে কাজ করে তা সহজ। আপনি অবিচ্ছিন্নভাবে ঘটতে চান এমন একটি ক্রিয়াকলাপ তৈরি করছেন এবং তারপরে সেই কার্যগুলি সম্পাদন করতে এবং লুপটি শেষ করার পরে বেরিয়ে যেতে বলছেন। কোনও অতিরিক্ত লাইব্রেরি রক্ষণাবেক্ষণের অভাবে, কার্যকারিতার অভাবের বিষয় নয়।