我有通过 https 获取数据的工作代码(如下)。事实上,它通过 php 运行一些测试。我使用了正常的标准超时。现在,在“等待”服务器响应时,我需要实现计时器。因为在某些情况下测试不会完成 - php 代码不会完成 - ruby 超时工作正常。所以我需要杀死一些进程来捕获现有 https 会话中的错误。
如何在现有超时之上实现我自己的 https 请求超时?
现有超时将始终大于自定义超时。例如,现有超时为 10 分钟,自定义为 5 分钟。
uri = URI.parse(url)
start = Time.new
http_read_timeout=60*10
connection = Net::HTTP.new(uri.host, 443)
connection.use_ssl = true
begin
response = connection.start() do |http|
http.open_timeout = 50
http.read_timeout = http_read_timeout
http.request_get(uri.request_uri)
# here I need to place a code that is triggered
# in case of custom timeout is reached
end
rescue Timeout::Error
# "Connection failed
time_out_message ="security time out - after #{http_read_timeout} sec"
return time_out_message
end
puts "finished"