Обычно Fabric завершает работу, как только вызов run() возвращает ненулевой код выхода. Однако для некоторых вызовов это ожидается. Например, PNGOut возвращает код ошибки 2, когда он не может сжать файл.
В настоящее время я могу обойти это ограничение только с помощью shell-логики (do_something_that_fails || true
или do_something_that_fails || do_something_else
), но я предпочел бы сохранить свою логику на простом Python (как и обещание Fabric).
Есть ли способ проверить код ошибки и отреагировать на него, а не наложить панику и умереть? Я по-прежнему хочу поведения по умолчанию для других вызовов, поэтому изменение его поведения путем изменения среды не похоже на хороший вариант (и, насколько я помню, вы можете использовать это только для того, чтобы предупредить его, а не умереть в любом случае).