Я пытаюсь справиться с ошибкой на ткани, но пример, который я видел на документах, был слишком локализован для моего вкуса. Мне нужно выполнить действия отката, если какой-либо из нескольких действий терпит неудачу. Я попробовал, то, чтобы использовать контексты, чтобы справиться с этим, как это:Обработка ошибок с помощью Fabric
@_contextmanager
def failwrapper():
with settings(warn_only=True):
result = yield
if result.failed:
rollback()
abort("********* Failed to execute deploy! *********")
А потом
@task
def deploy():
with failwrapper():
updateCode()
migrateDb()
restartServer()
К сожалению, когда одна из этих задач не получится, я не получаю ничего на result
.
Есть ли способ сделать это? Или есть другой способ справиться с такими ситуациями?