asyncio之调试
asyncio构建了一些有用的调试特性。
首先,事件循环在运行时使用logging来发送状态信息。在应用中启用日志就会获取到一些信息。其他的可以打开告诉事件循环来发送更多的调试信息。通过调用set_debug()传递boolean值来表明是否启动调试。
由于构建在asyncio上的应用程序对贪婪的协程很敏感而无法返回控制权,因此对于检查内置于事件循环中的慢回调是有帮助的。通过打开启用调试,并且通过将loop的slow_callback_duration的属性设置为发出警告的秒数来控制”slow”的定义。
最后,如果应用程序使用asyncio退出但没有清理一些协程或者其他的资源,这或许意味着有一个逻辑错误阻止了一些应用代码运行。在程序退出时,启用ResourceWarning警告会报告这些情况。
|
|
当没有启用调试运行时,所有都看起来是好的。
|
|
打开调试将暴露一些问题,包括虽然inner()方法完成,但是由于设置了slow_callback_duration,将需要更多的时间,并且程序退出时事件循环未被正确关闭的事实。
|
|