感谢一下google连接时间够长,方便测试。(非高级黑)
代码如下:
require 'net/http'
start = Time.now.to_i
begin
uri = URI.parse("http://www.google.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.open_timeout = 2
request = Net::HTTP::Get.new(uri.path)
puts http.request(request).body
rescue
puts ("%s;; %s" % [$!, $@])[0...100]
ensure
puts "Time: %s" % [Time.now.to_i - start]
end
win7-64位,输出:
F:\kit\Ruby200\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) F:/rubymine_git/ruby_snippet/http/http_timeout.rb
execution expired;; ["F:/kit/Ruby200/lib/ruby/2.0.0/net/http.rb:878:in `initialize'", "F:/kit/Ruby20
Time: 21
centos6.4-64位,输出:
$ ruby http_timeout.rb
execution expired;; ["/usr/local/lib/ruby/2.0.0/net/http.rb:878:in `initialize'", "/usr/local/lib/ru
Time: 2
观察Time,win耗时21秒才返回,linux正常2秒。此处有坑,解决可以转向Timeout做简单处理。