0

我想通过 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

我如何并行执行它?即使我需要编写更多代码,我也更喜欢标准库的一些可行的东西。

4

1 回答 1

0

您可以使用线程或多进程 (http://docs.python.org/dev/library/multiprocessing.html) 并行运行操作。同样的目的也可以通过结构http://docs.fabfile.org/en/1.5/实现。

于 2012-12-05T13:00:27.587 回答