私はまだ Ruby を使い始めたばかりで、初めていくつかの HTTP 関数に Timeout を使用しようとしていますが、明らかにマークがどこかにありません。私のコードは以下にありますが、機能していません。代わりに、次の例外が発生します。
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `initialize': execution expired (Timeout::Error)
タイムアウトしているコードの部分が begin/rescue/end ブロックにラップされ、具体的には Timeout::Error をレスキューするため、これはあまり意味がありません。何か間違っているのでしょうか、それとも 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