首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python异步调试示例

Python异步调试示例
EN

Stack Overflow用户
提问于 2015-05-02 06:49:25
回答 1查看 11K关注 0票数 19

我想启用Asyncio的未产生的协程检测,但没有成功。

这段简单的代码实现了以下建议:

https://docs.python.org/3/library/asyncio-dev.html#asyncio-logger

但实际上并不捕获未产生的“伪”协程。

代码语言:javascript
复制
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())

我本以为程序会以一个关于协程“虚拟”的警告结束,这个“虚拟”是创建的,但不会被放弃。

实际上,结果是:

代码语言:javascript
复制
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>

没有被遗弃的协程的迹象。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 17:08:51

asyncio在模块导入时执行PYTHONASYNCIODEBUG检查。

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

代码语言:javascript
复制
import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio

# rest of your file
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29996257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档