تمرینات آموزش ماژول Asyncio – کنسل کردن Coroutine

Please login to bookmark Close


این تمرین‌ها بر پایه‌ی درس کنسل‌کردن coroutine هستند.

تمرین ۱ (مفهومی)

متد cancel چه کاری روی یک task انجام می‌دهد؟ وقتی بعد از کنسل‌شدن دوباره منتظر همان task بمانیم (await)، چه نوع خطایی دریافت می‌کنیم؟

تمرین ۲ (مفهومی)

asyncio.wait_for هنگام رسیدن timeout چه خطایی پرتاب می‌کند؟ (دقت کنید که یک اشتباه رایج، گرفتن نوع خطای نادرست است.)

تمرین ۳ (مفهومی)

در مثال اول، کد یک حلقه می‌نویسد که هر بار بررسی می‌کند task تمام شده یا نه و بعد از مدتی آن را کنسل می‌کند. به‌جای این حلقه‌ی دستی، چه روش ساده‌تری برای همین کار وجود دارد؟

تمرین ۴ (مفهومی)

متد shield چه کاری برای یک task انجام می‌دهد؟ اگر با وجود shield‌شدن، مهلت زمانی (timeout) تمام شود چه اتفاقی می‌افتد؟

تمرین ۵ (مفهومی)

بعد از اینکه یک task محافظت‌شده با shield به‌دلیل پایان مهلت، TimeoutError ایجاد کرد، در قسمت except دوباره منتظر همان task می‌مانیم. چرا این await اضافه لازم است؟

تمرین ۶ (کد)

یک دانلود ۶ ثانیه‌ای را شبیه‌سازی کنید و به‌صورت دستی (با یک حلقه و cancel) کاری کنید که اگر تا ۵ ثانیه تمام نشد کنسل شود و پیام مناسب چاپ گردد.

تمرین ۷ (کد)

همان کار را این بار با asyncio.wait_for و timeout=5 و گرفتن نوع خطای درست بنویسید.

تمرین ۸ (کد واقعی)

یک تابع بنویسید که یک call_api کند (شبیه‌سازی‌شده با sleep[10]) اما اگر پاسخ در ۳ ثانیه نرسید، به‌جای معطل‌ماندن یک مقدار پیش‌فرض برگرداند.

Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم