Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何启动多个远程进程并在所有进程完成时等待_Ruby_Multithreading_Ssh - Fatal编程技术网

Ruby 如何启动多个远程进程并在所有进程完成时等待

Ruby 如何启动多个远程进程并在所有进程完成时等待,ruby,multithreading,ssh,Ruby,Multithreading,Ssh,我需要在多个虚拟机中启动多个Python脚本 我想运行脚本并退出。一旦脚本完成,他们应该发送一条消息回来 到目前为止,我的努力是: outputs = {} threads = [] (0..(@number_of_vms - 1)).each do |vm| threads << Thread.new do Net::SSH.start(address[vm], user) do |session| cmd = 'python /media/sf_ope

我需要在多个虚拟机中启动多个Python脚本

我想运行脚本并退出。一旦脚本完成,他们应该发送一条消息回来

到目前为止,我的努力是:

outputs = {}
threads = []

(0..(@number_of_vms - 1)).each do |vm|
  threads << Thread.new do

    Net::SSH.start(address[vm], user) do |session|
      cmd = 'python /media/sf_openfoam/gen_cfd_results.py'
      outputs[address[vm]] = session.exec!(cmd)

    end
  end
end
threads.each {|thr| thr.join }
outputs={}
线程=[]
(0..(@numberofvms-1))。每个都有虚拟机|

找到的线程必须使用
连接
。作为建议,您需要跟踪连接到的每个系统的响应。我建议为每个主机使用一个带有密钥的散列,但这是您的实现选择。想象一下,如果你不知道哪台机器出了故障,那么在诊断问题时会遇到什么问题。另外,我会使用
address.each
来循环,但我可能太天真了。谢谢。我已编辑代码以包含您的建议。这是非常奇怪的,因为这段代码在我本地的虚拟机上按预期工作,但实际上它在amazon上的其他4个虚拟机上立即退出。是否存在超时问题?忘记亚马逊上的问题。我的错误。如果你回答这个问题,我会接受的。谢谢你必须使用你找到的
加入
。作为建议,您需要跟踪连接到的每个系统的响应。我建议为每个主机使用一个带有密钥的散列,但这是您的实现选择。想象一下,如果你不知道哪台机器出了故障,那么在诊断问题时会遇到什么问题。另外,我会使用
address.each
来循环,但我可能太天真了。谢谢。我已编辑代码以包含您的建议。这是非常奇怪的,因为这段代码在我本地的虚拟机上按预期工作,但实际上它在amazon上的其他4个虚拟机上立即退出。是否存在超时问题?忘记亚马逊上的问题。我的错误。如果你回答这个问题,我会接受的。谢谢