Tôi đang cố gắng xử lý lỗi trên vải, nhưng ví dụ tôi thấy trên tài liệu đã quá bản địa hóa cho khẩu vị của mình. Tôi cần thực thi các hành động rollback nếu bất kỳ hành động nào bị lỗi. Tôi cố gắng, sau đó, sử dụng những bối cảnh để xử lý nó, như thế này:Xử lý lỗi với Fabric
@_contextmanager
def failwrapper():
with settings(warn_only=True):
result = yield
if result.failed:
rollback()
abort("********* Failed to execute deploy! *********")
Và sau đó
@task
def deploy():
with failwrapper():
updateCode()
migrateDb()
restartServer()
Thật không may, khi một trong những nhiệm vụ thất bại, tôi không nhận được bất cứ điều gì trên result
.
Có cách nào để hoàn thành việc này không? Hay có cách nào khác để xử lý các tình huống như vậy?