如何手动引发超时错误?

时间:2015-06-04 07:28:04

标签: ruby http

我想测试一个http get请求。如果超时则输出一些东西。

  begin
      url = "#{url}?#{params.to_param}"
      Net::HTTP.get_response(URI.parse(url))
  rescue Timeout::Error
      puts "....."
  end

如何手动引发超时错误?或者如何为http请求设置较短的超时号码?

对于http请求,我应该更改默认超时号码吗?多长时间合适?

2 个答案:

答案 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超时秒数。