每30秒ping一个URL的Ruby脚本

每30秒ping一个URL的Ruby脚本,ruby,Ruby,有没有办法使用Ruby脚本每隔30秒ping一次URL require 'net/http' http = Net::HTTP.new('www.google.com',80) response = http.request_get('/') p response.status 根据您的使用情况,一个简单的循环和睡眠可能会影响作业: require 'net/http' loop do http = Net::HTTP.new('www.google.com') response

有没有办法使用Ruby脚本每隔30秒ping一次URL

require 'net/http'

http = Net::HTTP.new('www.google.com',80)
response = http.request_get('/')
p response.status

根据您的使用情况,一个简单的
循环
睡眠
可能会影响作业:

require 'net/http'

loop do
  http = Net::HTTP.new('www.google.com')
  response = http.request_get('/')
  p response.code

  sleep 30      
end

根据您的使用情况,一个简单的
循环
睡眠
可能会影响作业:

require 'net/http'

loop do
  http = Net::HTTP.new('www.google.com')
  response = http.request_get('/')
  p response.code

  sleep 30      
end

只要ping持续时间小于30秒,此代码每30秒ping一次

require 'net/http'

time_step = 30 #s

loop do
  start = Time.now
    http = Net::HTTP.new('www.google.com',80)
    response = http.request_get('/')
    p response.code # -> "302"
  duration = Time.now-start

  sleep (time_step - duration) unless duration > time_step
end

只要ping持续时间小于30秒,此代码每30秒ping一次

require 'net/http'

time_step = 30 #s

loop do
  start = Time.now
    http = Net::HTTP.new('www.google.com',80)
    response = http.request_get('/')
    p response.code # -> "302"
  duration = Time.now-start

  sleep (time_step - duration) unless duration > time_step
end


如果你准备好使用
cron
@tadman,那么
while true
sleep(30)
每一分钟都很简单,当然这不是问题。那么,在你的电脑中,这就像
***~/cron/myscript
一样简单。这样做的好处是,即使在重新启动后,它也会一直运行,无需干预。它可以在macOS上工作,是的,因为它有一个BSD内核。(注意,这不是“MAC”。如果你准备好使用
cron
@tadman,那么
while true
sleep(30)
每一分钟都很简单,当然这不是问题。然后,在你的电脑中,它就像
***~/cron/myscript
一样简单。这样做的好处是,即使在重新启动后,它也会一直运行,无需干预。它可以在macOS上工作,是的,因为它有一个BSD内核。(注意,这不是“MAC”。但如果提供url的服务器在1分钟后会响应呢?我们可以这样做:
Net::HTTP.new('www.google.com',80,:read_timeout=>10)
?@spickermann SocketError:无法打开到www.google.com:80的TCP连接(getaddrinfo:nodename或servname提供,或未知)@num8er:正如我所说的,这取决于用例。无论发生什么情况,每30秒ping一次是否重要?还是在最后一次ping成功后30秒ping?@HarshaMV:我更新了我的答案以回应你的评论。在我的机器上工作正常。但如果提供url的服务器在1分钟后会响应呢?我们可以这样做:
Net::HTTP.new('www.google.com',80,:read\u timeout=>10)
?@spickermann SocketError:无法打开到www.google.com的TCP连接:80(getaddrinfo:nodename或servname提供,或未知)@num8er:正如我所说的,这取决于用例。无论发生什么情况,每30秒ping一次是否重要?还是在最后一次ping成功后30秒ping?@HarshaMV:我更新了我的答案以回应你的评论。在我的机器上很好用。