asyncio模块中,是否有与CalledProcessError模块中的subprocess异常类似的东西?

我本来希望有一个模拟,因为asyncio模块创建了TimeoutError异常以替换TimeoutExpired模块中的subprocess异常。但是似乎没有一个。

作为一个子问题:CalledProcessError异常仅适用于Popen类的实例吗?还是与实现(子)流程功能的其他类(例如,来自Processasyncio或来自Subprocesstornado.process)一起使用?

在某些情况下,CalledProcessError异常可能与类似但与Popen不同的类的实例一起工作。例如,可以在GitHub examples上找到使用CalledProcessError中的Subprocess类实例调用tornado.process的人。

请注意,在上面的示例中,虽然tornado.process确实具有subprocess.CalledProcessError的别名,但基于文件顶部的import语句(不是被调用的异常);确实是subprocess.CalledProcessError被调用。

如果CalledProcessError也可以与Process中的asyncio类的实例一起使用,那么TimeoutExpired为什么也不能与Process中的asyncio类的实例一起使用?换句话说,为什么在asyncio中必须创建TimeoutError异常的新版本(TimeoutExpired),而不必创建CalledProcessError异常的新版本?

归根结底,the source code for CalledProcessError并没有那么复杂,所以如果我想为Process中的asyncio类的实例创建一个重复的版本,我想我可能可以,但是首先看来是可取的尝试避免这种代码重复。

注意:我当前正在使用的思维模型是“ asyncio.subprocess模块旨在以异步方式完成subprocess模块所做的所有工作”。在某种程度上,这种思维模式是不正确的,这个问题很可能包含固有的先入之见/误解。

最佳答案

asyncio不包含CalledProcessError的任何等效项,因为它不包含引发CalledProcessError的所有等效项。 check_callcheck_outputcheck_returncodecheckrun参数没有等效项。

08-07 06:44