即使连接可用,在循环中检查网络连接也不会成功

时间:2013-03-10 10:31:06

标签: ruby networking

我想检查与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

重现的步骤:

  1. 关闭网络链接
  2. 启动程序
  3. - > getaddrinfo:名称或服务未知
  4. - > ...
  5. 再次启用网络链接
  6. 仍然没有连接,同样的错误
  7. 为什么?

    Ruby版本:ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-linux]

0 个答案:

没有答案