我想检查与Ruby的特定服务器的连接。所以我只是将HTTP请求包装到一个开始/救援构造中,如果连接不可用,请在几秒钟后重试。
问题:如果我启动没有可用连接的程序(链接断开),即使在某个时候连接可用(例如通过ping,浏览器请求),它也永远不会成功找到连接。
代码:
require 'net/http'
loop do
begin
uri = URI.parse 'http://www.example.com'
resp = Net::HTTP.get uri
rescue SocketError => se
puts se
sleep 3
next
rescue Exception => e
puts e
break
end
puts 'It works!'
break
end
重现的步骤:
为什么?
Ruby版本:ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-linux]