gpt4 book ai didi

python - 使用 Fabric 处理故障

转载 作者:太空狗 更新时间:2023-10-30 00:51:35 25 4
gpt4 key购买 nike

我正在尝试处理 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 上没有得到任何信息。

有什么办法可以实现吗?还是有另一种方法来处理这种情况?

最佳答案

根据我的测试,你可以用这个来完成:

from contextlib import contextmanager

@contextmanager
def failwrapper():
try:
yield
except SystemExit:
rollback()
abort("********* Failed to execute deploy! *********")

如您所见,我去掉了 warn_only 设置,因为我认为如果可以执行回滚则不需要它,并且无论如何您都将使用 abort() 中止执行。

Fabric 在遇到错误时引发 SystemExit 异常并且未使用 warn_only 设置。我们可以捕获异常并进行回滚。

关于python - 使用 Fabric 处理故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com