0

Ruby で特定のサーバーへの接続を確認したい。したがって、HTTP 要求を begin/rescue コンストラクトにラップし、接続が利用できない場合は数秒後に再試行するだけです。

問題: 接続が利用できない (リンクダウン) 状態でプログラムを起動すると、ある時点で接続が利用可能であっても (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. まだ接続できません、同じエラー

何故ですか?

Ruby バージョン: ruby​​ 1.9.3p392 (2013-02-22 リビジョン 39386) [x86_64-linux]

4

0 に答える 0