当主机列表之一发生错误时,如何防止在其他主机上执行 Fabric 任务(串行模式)?
How to prevent Fabric task (in serial mode) from being executed on other hosts when error occurs on one of the hosts list?
在串行模式下,当我的其中一台主机检测到错误时,我想取消所有其他后续主机上的任务,但不想退出整个代码。
怎么做?
代码示例:
target_hosts = [host1, host2, host3]
execute(function, hosts=target_hosts)
print "Hello world"
如果 host2
发生错误,我不想 function
继续 host3
,但仍想打印 Hello world
.
在不知道您在 function
中尝试做什么的情况下,很难找到正确的方法。据我所知,Fabric 的 execute
没有提供任何错误处理,所以你必须自己做。尝试这样的事情
#!/usr/bin/env python
from fabric.api import run, execute, settings
def fce():
with settings(warn_only=True):
if run('echoo $HOSTNAME').failed: # this will fail
return False
return True
target_hosts = [host1, host2]
for host in target_hosts:
out = execute(fce, host=host)
if not out[host]:
break
print "Hello world"
在串行模式下,当我的其中一台主机检测到错误时,我想取消所有其他后续主机上的任务,但不想退出整个代码。
怎么做?
代码示例:
target_hosts = [host1, host2, host3]
execute(function, hosts=target_hosts)
print "Hello world"
如果 host2
发生错误,我不想 function
继续 host3
,但仍想打印 Hello world
.
在不知道您在 function
中尝试做什么的情况下,很难找到正确的方法。据我所知,Fabric 的 execute
没有提供任何错误处理,所以你必须自己做。尝试这样的事情
#!/usr/bin/env python
from fabric.api import run, execute, settings
def fce():
with settings(warn_only=True):
if run('echoo $HOSTNAME').failed: # this will fail
return False
return True
target_hosts = [host1, host2]
for host in target_hosts:
out = execute(fce, host=host)
if not out[host]:
break
print "Hello world"