Могу ли я отловить коды ошибок при использовании Fabric для вызова run () в удаленной оболочке?

Обычно Fabric завершает работу, как только вызов run () возвращает ненулевой код выхода. Однако для некоторых звонков это ожидается. Например, PNGOut возвращает код ошибки 2, когда не удается сжать файл.

В настоящее время я могу обойти это ограничение только с помощью логики оболочки ( do_something_that_fails || true или do_something_that_fails || do_something_else ), но я бы предпочел сохранить свою логику на простом Python (как и обещание Fabric).

Есть ли способ проверить код ошибки и отреагировать на него вместо того, чтобы Fabric паниковал и умирает? Я все еще хочу поведение по умолчанию для других вызовов, поэтому изменение его поведения путем изменения среды не кажется хорошим вариантом (и, насколько я помню, вы можете использовать это только для того, чтобы предупредить его, а не умирать в любом случае).

64
задан Alan Plum 3 February 2011 в 16:11
поделиться