python - 使用结构同时在多个主机上运行脚本
问题描述
我正在尝试创建一个程序来创建多个液滴,向每个液滴发送一个脚本,并在不等待输出的情况下启动所有脚本的执行。我试图在后台运行它,使用 nohup 以便在使用以下代码从终端断开连接时它不会被杀死:
for i in len(script_names):
c = Connection(host = host[i], user = user[i], connect_kwargs = {"password" : password, "key_filename" : key_filename})
c.run("nohup python3 /root/" + script_names[i] + " &")
我已经尝试过相同想法的其他变体,包括设置“pty=False”,使用 "> /dev/null < /dev/null &" 将输出重定向到 dev/null,但似乎没有任何效果。
是否可以发出多个命令以同时在不同主机上运行脚本而无需等待结构的输出?或者我应该使用另一个包?
解决方案
Fabric 2.x 的组还没有完全充实,所以它们不太适合这个用例。在结构 1.x 中,我将通过使用 script_names 的字典来完成此操作,其中键是host
列表中的主机字符串,值是当前 script_names 中的名称。然后我会让每个任务像往常一样并行执行它的运行命令,在任务中查找值fabric.api.env.host_string
。Fabric 2.x 的执行层还不支持这个用例 afaik。这是我试图破解它,但作者正确地指出,这个功能应该在执行器中处理,我当时无法提出解决方案:https ://github.com/fabric/fabric /拉/1595
推荐阅读
- sql - 当只有一行满足 WHERE 子句的要求时,是否有返回一组行的 SQL 查询/函数?
- postgresql - 如何使用 UUID 作为 Postgresql 中的外键与休眠
- javascript - 使用 JavaScript 自动滑动,试图让滑块在不点击的情况下滑动
- jolt - 颠簸变换嵌套分组
- java - Java Streams - 根据列表的值组成一个值
- python - Python:计算 HTML 中的特定单词
- math - 方阵的 sympy Exp 给出索引错误
- python - 如何设置次要刻度的范围?
- c# - 从 IFormFile 异常中获取内存流
- automation - 如何在 UiPath 的弹出面板上指示元素?