Я хотел бы запустить мои существующие задачи fabfile без cli непосредственно из Python. Как я могу уловить «выполнение» исключений и захватить вывод для ведения журнала, если происходят какие-либо исключения?Как запускать задачи для Fabric непосредственно из Python, занимаясь исключениями и выводами?
@roles(['localhost'])
def my_sudo_task():
sudo('ls -l /root/')
from fabfile import my_sudo_task
from fabric.tasks import execute
execute(my_sudo_task)
вот моя точная проблема:
try:
# is there a way to leave out stderr and capture it somehow?
with settings(hide('stdout', 'stderr', 'aborts', 'warnings', 'running')):
execute(my_sudo_task)
except Exception as e: # doesnt catch error
print ('ERROR')
raise
except:
print ('ERROR') # catches but lacks the error message that i can log
все, что мне нужно, для выполнения (задачи), чтобы вызвать любое исключение, когда sudo ('not a valid cmd') терпит неудачу. способ fab существует с 1. Конечно, есть лучший способ, чем переписывать каждую задачу, чтобы «поднять». – jayshilling
Из документов: «Тем не менее, Fabric по умолчанию использует« неуправляемый »шаблон поведения: если что-то пойдет не так, например, удаленная программа, возвращающая ненулевое возвращаемое значение, или код Python файла fabfile, столкнувшись с исключением, выполнение немедленно прекратится». – jumbopap
Я уточнил вопрос: «за исключением« Исключение как е »ничего не ловит, просто« кроме »работает, но бесполезно, поскольку он не предоставляет сообщение об ошибке для журнала – jayshilling