如何编写 subprocess.check_output 的异步版本?
Posted
技术标签:
【中文标题】如何编写 subprocess.check_output 的异步版本?【英文标题】:How do I write an async version of subprocess.check_output? 【发布时间】:2021-11-26 03:25:13 【问题描述】:在新的 asyncio 框架中,我如何编写一个与 subprocess.check_output 等效的嵌入式异步来捕获流程执行的完整输出?
【问题讨论】:
你试过什么?你有什么具体问题? 【参考方案1】:async def check_output(*args, **kwargs):
p = await asyncio.create_subprocess_exec(
*args,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
**kwargs,
)
stdout_data, stderr_data = await p.communicate()
if p.returncode == 0:
return stdout_data
一个简单的示例解决方案(失败时不会引发错误,而是返回 None)
【讨论】:
以上是关于如何编写 subprocess.check_output 的异步版本?的主要内容,如果未能解决你的问题,请参考以下文章