活到老学到老之fabric group

上一篇文章讲了使用python fabric ssh连接EC2,并且使用ThreadPoolExecutor线程池执行器进行并发:
https://blog.youkuaiyun.com/zhang_jiamin/article/details/149581104?spm=1011.2415.3001.5331

其实fabric 自己也提供了并发的方法Group。

SerialGroup

from fabric import SerialGroup

for conn in SerialGroup('host1', 'host2', user='ec2-user'):
    conn.run('bash start_viewer.sh')
  • SerialGroup 是 Fabric 的高级 API,可以一次连接多个主机,并串行执行命令。
  • 上面的代码是串行执行,即在 host1 上执行完后,才会执行 host2 上的命令。

Group

from fabric import Group

group = Group('host1', 'host2', user='ec2-user')
group.run('bash start_viewer.sh')  # 并发执行
项目SerialGroup / Group (Fabric)ThreadPoolExecutor + 自定义函数
用途SSH 连接并运行远程命令灵活执行任意函数(包括 SSH、业务逻辑等)
并发性SerialGroup: 串行
Group: 并发
并发(线程池控制)
简洁性非常简洁,适合纯 SSH 脚本场景自由度高,适合复杂逻辑
可控性错误处理受限,结果收集不灵活可以自由控制每个线程的行为
工具依赖依赖 Fabric 和其传输协议标准库 + 你选的 SSH 库(如 Paramiko)

总结

如果只需要在几个主机上执行简单的 Bash 脚本,用 Group(…).run(…) 很方便。
如果需要对每个连接结果进行处理、限流、异常捕捉等,更推荐 ThreadPoolExecutor + 自定义函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值