首页 > 解决方案 > 有没有办法同时(并行)运行三个循环 ruby​​ 方法?

问题描述

所以我正在制作一个在网络设备上运行 ping 的脚本,然后在设备离线时通过电子邮件提醒我。脚本完美运行!

但我希望能够同时运行多个这些方法。这是三个方法(它们正在调用其他方法,所以忽略它)。

但我希望能够同时运行这些循环方法。

def esxitest
    loop do
    test = system "ping -c 4 192.168.1.229"
    puts test
        if test == false 
            test2 = system "ping -c 4 192.168.1.229"
            puts test2
                if test2 == false
                    sendalert1
                    break
                else
                end
        end
    else test == true
    sleep(10) #300
    end
end

def proxytest
    loop do
    test = system "ping -c 4 192.168.1.226"
    puts test
        if test == false 
            test2 = system "ping -c 4 192.168.1.226"
            puts test2
                if test2 == false
                    sendalert2
                    break
                else
                end
        end
    else test == true
    sleep(20) #300
    end
end

def domaintest
    loop do
    test = system "ping -c 4 192.168.1.227"
    puts test
        if test == false 
            test2 = system "ping -c 4 192.168.1.227"
            puts test2
                if test2 == false
                    sendalert3
                    break
                else
                end
        end
    else test == true
    sleep(30) #300
    end
end

标签: ruby

解决方案


当我第一次查看您的代码时,我有两个问题:

1)你是如何盯着这段代码看的,将每个监控作为自己的进程启动不是更容易吗?

2) 我看到 3 个包含循环的方法,为什么不将循环移动到周围的方法?

def do_tests
  loop do
    esxitest
    proxytest
    domaintest
    sleep(10)
  end
end

推荐阅读