Python asyncio调试示例

Rdb*_*ost 17 python asynchronous python-3.x python-asyncio

我想启用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())
Run Code Online (Sandbox Code Playgroud)

我预计程序会以关于协同程序'dummy'的警告而结束,但是没有产生.

实际上,结果是:

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>
Run Code Online (Sandbox Code Playgroud)

没有一丝废弃的鲜花.我错过了什么?

And*_*lov 24

asyncio执行PYTHONASYNCIODEBUG模块导入检查.

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

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

# rest of your file
Run Code Online (Sandbox Code Playgroud)