python - `CalledProcessError`模块中是否有 `asyncio`的模拟?

标签 python asynchronous exception subprocess python-asyncio

asyncio模块中是否有一个与CalledProcessError类似的东西?来自 subprocess 模块的异常?

我本来希望有一个模拟,因为 asyncio 模块创建 TimeoutError异常替换 TimeoutExpired来自 subprocess 模块的异常。但好像没有。

作为一个子问题:CalledProcessError 异常是否仅适用于 Popen 的实例类(class)?或者它是否也可以与实现(子)进程功能的其他类(例如来自asyncioProcess或来自tornado.processSubprocess)一起使用?

看起来,CalledProcessError 异常可能适用于与 Popen 类似但不同的类实例。例如,可以在 GitHub 上找到 examples人们使用 tornado.process 中的 Subprocess 类的实例调用 CalledProcessError

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

如果 CalledProcessError 也适用于 asyncio 中的 Process 类的实例,那么为什么 TimeoutExpired 不能还可以使用 asyncio 中的 Process 类的实例吗?换句话说,在 asyncio 中,为什么需要创建 TimeoutExpired 异常的新版本 (TimeoutError),但不需要 有必要创建新版本的 CalledProcessError 异常吗?

归根结底the source code for CalledProcessError没那么复杂,所以如果我想为 asyncio 中的 Process 类的实例创建一个重复版本,我想我可能可以,但似乎需要首先尝试避免此类代码重复。

注意:我当前的工作思维模型是“asyncio.subprocess”模块旨在执行 subprocess 模块执行的所有操作,但异步”。如果这种心理模型不正确,这个问题可能会包含固有的先入之见/误解。

最佳答案

asyncio不包含 CalledProcessError 的任何等效项,因为它不包含引发 CalledProcessError 的任何等价物。 check_call 没有等效项, check_output , check_returncode ,或 check run 的参数.

关于python - `CalledProcessError`模块中是否有 `asyncio`的模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705914/

相关文章:

java - @async方法之间的同步

Javascript:在 Promise.all Map 函数中的每个请求后添加超时

java - 自签名证书验证不会在 Android 中抛出 SignatureException

python - 使用 TimedRotatingFileHandler,如何按照与轮换相同的约定命名第一个日志文件?

python - Pygame bliting 缩放图像

python-3.x - aiohttp是否有ORM?

c++ - 在 C++ 中捕获 MySQL 错误

.net - 当它们共享相同的类型时如何区分两个 .NET 异常?

python - 如何更改 jupyter 笔记本中的标准输入?

python - Nginx 和 CSS 问题