Есть ли в модуле asyncio
аналог исключения CalledProcessError
из модуля subprocess
?
Я бы ожидал, что будет аналог,потому что модуль asyncio
создает исключение TimeoutError
для замены исключения TimeoutExpired
из модуля subprocess
.Но, похоже, его нет.
В качестве подвопроса: исключение CalledProcessError
работает только с экземплярами класса Popen
?Или он также работает с другими классами (например, Process
из asyncio
или Subprocess
из tornado.process
), которые реализуют (дочерние) функциональные возможности процесса?
Похоже, что исключение CalledProcessError
может работать с экземплярами классов, аналогичными, но отличными от Popen
.Например, на GitHub можно найти примеров людей, звонящих CalledProcessError
с экземпляром класса Subprocess
из tornado.process
.
Обратите внимание, что в приведенном выше примере, хотя онверно, что tornado.process
имеет псевдоним для subprocess.CalledProcessError
, основанный на операторах import
в верхней части файла, который является не вызываемым исключением;на самом деле вызывается subprocess.CalledProcessError
.
Если CalledProcessError
также работает с экземплярами класса Process
из asyncio
, то почему TimeoutExpired
также не работает с экземплярами Process
класс от asyncio
?Другими словами, в asyncio
, почему было необходимо создать новую версию (TimeoutError
) исключения TimeoutExpired
, но не необходимо для создания новой версии исключения CalledProcessError
?
В конце дня исходный код для CalledProcessError
не так уж сложен, поэтому, если бы я хотел создать дублированную версию для экземпляров класса Process
из asyncio
, я полагаю, что мог бы, но сначала хотелось бы попытаться избежать такого дублирования кода.
Примечание: Моя текущая рабочая ментальная модель заключается в том, что модуль "asyncio.subprocess
нацеленделать все, что делает модуль subprocess
, но асинхронно ".Поскольку эта ментальная модель неверна, этот вопрос, скорее всего, будет содержать в себе предвзятые / неправильные представления.