Python asyncio调试示例

Rdbhost

我想启用Asyncio的不合格协程检测,但没有成功。

这个简单的代码在以下位置实现了建议:https :
//docs.python.org/3/library/asyncio-dev.html#asyncio-logger

但实际上并没有捕获到未产生的“虚拟”协程。

import sys, os
import asyncio
import logging
import warnings

os.environ['PYTHONASYNCIODEBUG'] = '1'
logging.basicConfig(level=logging.DEBUG)
warnings.resetwarnings()

@asyncio.coroutine
def dummy():
    print('yeah, dummy ran!!')

@asyncio.coroutine
def startdummy():
    print('creating dummy')
    dummy()

if __name__ == '__main__':
    lp = asyncio.get_event_loop()
    lp.run_until_complete(startdummy())

我希望该程序将以关于协程“虚拟”的警告结尾,该协程是“虚拟”的,但不是从中产生的。

实际上,结果是:

DEBUG:asyncio:Using selector: SelectSelector
creating dummy
sys:1: ResourceWarning: unclosed <socket object at 0x02DCB6F0>
c:\python34\lib\importlib\_bootstrap.py:2150: ImportWarning: sys.meta_path is empty
sys:1: ResourceWarning: unclosed <socket object at 0x02DE10C0>

没有丝毫协程被遗弃的迹象。我想念什么?

安德鲁·斯维特洛夫(Andrew Svetlov)

asyncioPYTHONASYNCIODEBUG对模块导入执行检查

因此,第一次异步导入之前,您需要设置环境变量

import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio

# rest of your file

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章