Python 异步调试示例
Python asyncio debugging example
我想开启Asyncio的un-yielded协程检测,但是没有成功
这个简单的代码实现了以下方面的建议:
https://docs.python.org/3/library/asyncio-dev.html#asyncio-logger
但实际上并没有捕获未生成的 'dummy' 协程。
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())
我预计该程序会以关于协程 '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>
没有遗弃协程的迹象。我错过了什么?
asyncio
对模块导入执行 PYTHONASYNCIODEBUG
检查。
因此你需要设置环境变量 before 第一次 asyncio import:
import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio
# rest of your file
我想开启Asyncio的un-yielded协程检测,但是没有成功
这个简单的代码实现了以下方面的建议:
https://docs.python.org/3/library/asyncio-dev.html#asyncio-logger
但实际上并没有捕获未生成的 'dummy' 协程。
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())
我预计该程序会以关于协程 '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>
没有遗弃协程的迹象。我错过了什么?
asyncio
对模块导入执行 PYTHONASYNCIODEBUG
检查。
因此你需要设置环境变量 before 第一次 asyncio import:
import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio
# rest of your file