ファブリックの障害を処理しようとしていますが、ドキュメントで見た例は自分の好みに合わせてローカライズされていません。いくつかのアクションのいずれかが失敗した場合は、ロールバックアクションを実行する必要があります。私はこのように、それを処理するためにコンテキストを使用して、その後、試してみました:ファブリックで障害を処理する
@_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
に何かを得ることはありません。
これを達成する方法はありますか?あるいは、そのような状況を扱う別の方法がありますか?あなたは、私はロールバックを実行することができた場合、あなたがそれを必要としないと仮定して、私はwarn_only設定を処分した見ることができるように
@_contextmanager
def failwrapper():
try:
yield
except SystemExit:
rollback()
abort("********* Failed to execute deploy! *********")
: