跳到内容

在异步函数中创建子进程 (ASYNC220)

派生自 flake8-async linter。

作用

检查异步函数是否使用了阻塞方法创建子进程。

为什么这不好?

通过阻塞调用阻塞异步函数将阻塞整个事件循环,阻止其在等待调用完成时执行其他任务,从而抵消了异步编程的好处。

请使用等效的异步库或函数,例如 trio.run_process()anyio.run_process(),而不是进行阻塞调用。

示例

import os


async def foo():
    os.popen(cmd)

建议改为

import asyncio


async def foo():
    asyncio.create_subprocess_shell(cmd)