ruby - 有没有办法同时(并行)运行三个循环 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
解决方案
当我第一次查看您的代码时,我有两个问题:
1)你是如何盯着这段代码看的,将每个监控作为自己的进程启动不是更容易吗?
2) 我看到 3 个包含循环的方法,为什么不将循环移动到周围的方法?
def do_tests
loop do
esxitest
proxytest
domaintest
sleep(10)
end
end
推荐阅读
- node.js - 对象的值不是由映射函数分配的
- apache-poi - 如何隐藏列并更改其顺序?
- json - React-Native render json from fetch
- html - 是什么让第一段和第二段向左浮动?
- javascript - 淘汰赛:表分页
- android - Filter JSON via its array's name in same fragment using Retrofit
- javascript - Javascript更改输入字段禁用按钮
- r - 在 R Shiny 中设置数据表选项
- google-cloud-platform - 什么是 Google Cloud Storage 公共读取 uri?
- jquery - jquery array.push() 出错