Timeout::Error ist nicht die Rettung in Ruby

Ich bin noch neu mit Rubin und für die erste Zeit, die ich versuche zu verwenden Timeout für einige HTTP-Funktionen, aber offensichtlich bin ich das Ziel verfehlen irgendwo. Mein code ist unten, aber es funktioniert nicht. Stattdessen stellt es die folgende Ausnahme:

C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `initialize': execution expired (Timeout::Error)

Welche doesn T machen sehr viel Sinn für mich, da der Teil des Codes, es ist das timing, ist eingehüllt in ein begin/rescue/end-block und speziell rettet Timeout::Error. Mache ich etwas falsch, oder etwas nicht unterstützt Ruby?

    retries = 10
    Timeout::timeout(5) do
      begin
        File.open("#{$temp}\\http.log", 'w') { |f|
          http.request(request) do |str|
            f.write str.body
          end
        }
      rescue Timeout::Error
        if retries > 0
          print "Timeout - Retrying..."
          retries -= 1
          retry
        else
          puts "ERROR: Not responding after 10 retries!  Giving up!")
          exit
        end
      end
    end
InformationsquelleAutor Flipt Doubt | 2012-08-02
Schreibe einen Kommentar