我想测试一个http get请求。如果超时则输出一些东西。
begin
url = "#{url}?#{params.to_param}"
Net::HTTP.get_response(URI.parse(url))
rescue Timeout::Error
puts "....."
end
如何手动引发超时错误?或者如何为http请求设置较短的超时号码?
对于http请求,我应该更改默认超时号码吗?多长时间合适?
答案 0 :(得分:1)
基于http://opensourceconnections.com/blog/2008/04/24/adding-timeout-to-nethttp-get_response/
http = Net::HTTP.new(url.host, url.port)
http.read_timeout = 5
http.open_timeout = 5
resp = http.start() {|http|
http.get(url.path)
}
puts resp.kind_of? Net::HTTPResponse
puts resp.code
puts resp.body
答案 1 :(得分:0)
设置超时使用:
http = Net::HTTP.new(host_param)
http.read_timeout = 500
您可以设置几种类型的超时。来自docs:
open_timeout
:
等待连接打开的秒数。
可以使用任何数字,包括小数秒的浮点数。
如果HTTP对象在这很多秒内无法打开连接,
它引发了一个Net :: OpenTimeout异常。默认值为nil。
read_timeout
:
等待一个块被读取的秒数(通过一次读取(2)调用)。
可以使用任何数字,包括小数秒的浮点数。
如果HTTP对象在这么多秒内无法读取数据,
它引发了一个Net :: ReadTimeout异常。默认值为60秒。
ssl_timeout
:
设置SSL超时秒数。