繁体   English   中英

如何手动引发超时错误?

[英]how to raise a timeout error manually?

我想测试一个http get请求。 如果超时,则输出一些内容。

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

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

对于http请求,是否应更改默认超时号? 多长时间合适?

基于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

设置超时使用:

http = Net::HTTP.new(host_param) 
http.read_timeout = 500

您可以设置几种超时类型。 文档

  • open_timeout :等待连接打开的秒数。 可以使用任何数字,包括浮点数秒。 如果HTTP对象在这么多秒内无法打开连接,则会引发Net :: OpenTimeout异常。 缺省值为nil。

  • read_timeout :等待读取一个块的秒数(通过一次read(2)调用)。 可以使用任何数字,包括浮点数秒。 如果HTTP对象在这么多秒内无法读取数据,则会引发Net :: ReadTimeout异常。 默认值为60秒。

  • ssl_timeout :设置SSL超时秒数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM