Method: Gem::Net::HTTP::Persistent.detect_idle_timeout
- Defined in:
- lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
.detect_idle_timeout(uri, max = 10) ⇒ Object
Use this method to detect the idle timeout of the host at uri. The value returned can be used to configure #idle_timeout. max controls the maximum idle timeout to detect.
After
Idle timeout detection is performed by creating a connection then performing a HEAD request in a loop until the connection terminates waiting one additional second per loop.
NOTE: This may not work on ruby > 1.9.
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb', line 201 def self.detect_idle_timeout uri, max = 10 uri = Gem::URI uri unless Gem::URI::Generic === uri uri += '/' req = Gem::Net::HTTP::Head.new uri.request_uri http = new 'net-http-persistent detect_idle_timeout' http.connection_for uri do |connection| sleep_time = 0 http = connection.http loop do response = http.request req $stderr.puts "HEAD #{uri} => #{response.code}" if $DEBUG unless Gem::Net::HTTPOK === response then raise Error, "bad response code #{response.code} detecting idle timeout" end break if sleep_time >= max sleep_time += 1 $stderr.puts "sleeping #{sleep_time}" if $DEBUG sleep sleep_time end end rescue # ignore StandardErrors, we've probably found the idle timeout. ensure return sleep_time unless $! end |