代码之家  ›  专栏  ›  技术社区  ›  ollien

用于检查异步代码路径是否执行同步I/O的构建时工具

  •  0
  • ollien  · 技术社区  · 5 年前

    import requests
    
    async def foo():
        res = await get_resource()
        status_code = await make_request(res)
    
        print(f"status code: {status_code}\n", res)
    
    async def get_resource():
        # ...
        with open('file') as f:
            return f.read()
    
    async def make_request(data):
        return requests.post('/create', data=data).status_code
    
    

    这个程序没有任何好处 async 并且会影响事件循环中其他代码的性能。显然,这是一个简单的示例,但是跨多个文件和开发人员,可能不太容易发现。

    0 回复  |  直到 5 年前
        1
  •  1
  •   alex_noname    5 年前

    你可以使用asyncio debug mode

    WARNING: Executing <Task finished coro=<inner() done, defined at
    asyncio_debug.py:33> result=None created at asyncio_debug.py:43>
    took 0.101 seconds
    
    推荐文章
    Jannes V  ·  Webpack URL不正确
    9 年前