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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Timeout::Error
wird immer angehoben in den Ruf zuTimeout::timeout
, so müssen Sie, dass innerhalb derbegin
block::)
Verwendung wiederholbarer zu machen, diese einfache
https://github.com/nfedyashev/retryable#readme