پاسخ تمرین ۱
wait_for روی یک coroutine یا Task تکی در هر لحظه کار میکند، اما wait روی یک گروه کامل از Taskها با هم کار میکند. به همین خاطر، wait_for یک نتیجه یا خطای Timeout برمیگرداند، اما wait دو گروه جدا برمیگرداند: Taskهایی که تمام شدهاند و Taskهایی که هنوز در جریان هستند.
پاسخ تمرین ۲
خطای TimeoutError صادر میشود، و علاوه بر ان، خود Task هم بهصورت خودکار توسط wait_for لفو میشود. لازم نیست خودمان آن را لفو کنیم؛ این کار بهعنوان بخشی از مدیریت Timeout انجام میشود.
پاسخ تمرین ۳
گروه pending شامل هر Task ی است که در همان لحظهای که اولین Task تمام شده، هنوز کارش تمام نشده. خود wait هیچ کاری با این Taskهای ناتمام انجام نمیدهد؛ تصمیم گیری که لفو شوند، بیشتر منتظر بمانند یا به کارشان ادامه بدهند کاملا به عهدهی برنامهنویس است.
پاسخ تمرین ۴
wait برای کار کردن با شیءهای Task ساخته شده طراحی شده، نه با coroutineهای خام و شروعنشده. نسخههای جدید پایتون دیگر اجازه نمیدهند یک coroutine را مستقیم به wait بدهیم، پس باید اول آن را به یک Task تبدیل کنیم.