繁体   English   中英

在将Fabric用于以下代码时,如何添加超时?

[英]How do I add timeout while using fabric for below code?

代码如下。 我会在这里解释。

我使用交换矩阵检查2个服务器的安装点状态。 该命令是

df -h /mnt

此命令的问题是它可能永远挂在那里,因此结构代码将永远挂起。 我认为某些超时机制可以解决此问题。 但是我没有在结构文档中找到它。 有什么设置吗?

import fabric
from fabric import ThreadingGroup as Group

directory = '/mnt'
group = Group('server1', 'server2', user='someuser', connect_kwargs={'password':'somepassword'})
try:
    result = group.run("df -h %s" % directory)
except fabric.exceptions.GroupException as e:
    err = e
    pass

选项#1:使用bash超时来停止命令timeout 10 df -h

选项2:使用run功能的timeout参数 以秒为单位指定超时,如果命令超时,则会引发CommandTimeout异常。

Group.run

执行Connection.run所有成员的连接。

Connection.run

包装支持SSH的invoke.runners.Runner.run实现; 有关详细信息,请参见其文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM