همان گونه که احتمالا میدانید هنگامی که طراحی اپلیکیشن شما یک تابع coroutine را فراخوانی میکنید آن به شما یک شی coroutine را گشوده می گرداند:
async def my_coroutine():
pass
print(my_coroutine())
کد شما می بایست معطل بمانید تا این شی coroutine جاری ساختن گردد، شما ممکن میباشد به راحتی این نکته را فراموش فرمایید، به همین انگیزه میباشد که بسط دهندگان syncios تصمیم گرفتند که یک موقعیت انواع زدایی را به وجود بیاورند تا به راحتی این اشتباه را رئیس نمایید. هر مجال که یک شی coroutine سوای در انتظار ماندن ازبین رفت وضعیت انواع زدایی یک غلط را یاور با یک traceback که اشاره دارااست به خطی کهاین غلط در آن پیش آمده میباشد چاپ می نماید.
هنگامی که Yury Selivanov شرایط خطایابی را طراحی کرد وی اساس و پایه فعالیت خویش را براساس یک خصوصیت \"coroutine wrapper\" تشکیل داد.
Wrapper یک تابع میباشد که یک شی coroutine را اخذ می نماید و هر آن چه که در آن جایدارد را گشوده می گرداند، یوری از آن بهره مند شد تا منطق خطایابی خویش را طراحی نماید، البته فرد دیگری میتواند از آن استعمال نماید تا شی coroutine را در پوسته یک استرینگ یا این که حرفه با مقدار “hi” گشوده گرداند.
import sys
def my_wrapper(coro):
return \'hi!\'
sys.set_coroutine_wrapper(my_wrapper)
async def my_coroutine():
pass
print(my_coroutine())
این صرفا بخشی از دنیای فردی سازی میباشد، این مسئله معنای async را به طور بی نقص تغییرو تحول میدهد، فراخوانی set coroutine wrapper برای یک توشه میتواند روی هم رفته همگی توابع coroutine را تغییر تحول دهد. ناتانیل اسمیت درباره این مورد نوشته میباشد که: \" یک api ایراد ساز\" میباشد که مستعد سوء استعمال باشد و نیاز به حذف آن شم خواهد شد. توسعه و گسترش دهندگان asyncio میتوانند از ایرادات مرتبط با حذف خصوصیات رها شوند در حالتیکه بتوانند غرض خویش را به صورت بهتری تعیین و پیاده سازی نمایند. در واقع سازندگان بایستی نکاتی که در پی مقاله ذکر میکنیم را همواره در ذهن خویش داشته باشند.