As the title says I'm struggling with web requests taking way longer to throw a timeout and move on than they should, 21 seconds. Here's what I'm working with currently:
t=1
puts Time.new
begin
response=Net;;HTTP.start(full_address.host,full_address.port,
;read_timeout=>t,;open_timeout=>t,;ssl_timeout=>t,;continue_timeout=>t,
;write_timeout=>t){|http|http.request(request)}
rescue Exception => e
puts "Rescue block end"
puts e.message
end
puts Time.new
Normally I would think I'd have to only set the open_timeout, as I expect that users might set incorrect variables for full_address. The two time outputs should be no more than a few seconds maximum apart, instead it's this:
2019-02-05 02:32:10 +0100
Rescue block end
execution expired
2019-02-05 02:32:31 +0100
21 seconds, much, much to long for proper user experience.
Now it's not like the t value is completely ignored, just kinda. Setting t to some really high value, something above 21 (or setting no timeout at all) changes the error message, but nothing else, it still takes the exact same amount of time.
2019-02-05 02:41:12 +0100
Rescue block end
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - connect(2) for "[IP]" port X
2019-02-05 02:41:33 +0100
I've tried multiple ways of rewriting the http request too, all giving me the same dreaded 21 seconds. Anyone have an idea what's going on?
Coding can be sooo frustrating...