我想通过 SSH 连接到 N 个主机来检查命令的输出。成功运行将在约 2 秒内返回,而每次超时可能需要 40 秒。正如我们看到的 5 台主机,最好的情况是 10 秒,而最坏的情况是超过 3 分钟。
所以我想透明地并行执行它们,当最后一个完成后,我想检查输出(以及如果发生错误)。而且我不希望个别结果减慢整个过程。
这是我需要并行运行的功能:
def fetch_results_from_ssh( host):
try:
a = login_and_fetch_values()
return a
except:
throw Exception("something")
这是我想要使上述函数异步的包装类型:
result_futures = []
for i in ["h1","h2","h3"]
result_futures.append( async( fetch_results_from_ssh( i))
for i in result_futures:
if i.worked_fine():
print "host " + host + "value: " + i.value #yes, i did not define host anywhere
else:
print "host " + host + "error: " + i.error
我如何并行执行它?即使我需要编写更多代码,我也更喜欢标准库的一些可行的东西。