【发布时间】:2015-04-01 12:53:40
【问题描述】:
我在this post 中看到了一些有用的信息,说明如果您使用subprocess 从中检索输出,您不能期望在后台运行进程。问题是……这正是我想要做的!
我有一个脚本,它通过ssh 将命令发送到各个主机,我不想在开始下一个之前等待每个主机完成。理想情况下,我可以有这样的东西:
for host in hostnames:
p[host] = Popen(["ssh", mycommand], stdout=PIPE, stderr=PIPE)
pout[host], perr[host] = p[host].communicate()
这将有(在mycommand 需要很长时间的情况下)所有主机同时运行mycommand。就像现在一样,整个 ssh 命令似乎在开始下一个命令之前完成。这是(根据我链接的上一篇文章)由于我正在捕获输出,对吗?除了cat将输出写入文件并稍后读取输出之外,有没有一种体面的方法可以让这些事情在不同的主机上并行发生?
【问题讨论】:
-
为此使用织物:fabfile.org