我有一个通过 http 获得响应的函数。它运行一些测试。最近开始发生测试永远不会完成的情况。所以我介绍了一个超时。然后我发现如果我停止数据库服务器,测试脚本会以一个 db 错误结束,这实际上很好地导致了测试没有按预期完成的原因。所以得到错误可以帮助我节省时间。因为我不必再次手动重现整个测试。
Q1:有什么办法可以让连接超时,然后在数据库服务器重启后得到响应?请注意,我无法再次发送 http 请求,因为它会再次启动相同的文本。
Q2:我认为一个解决方案是在“等待”http响应时引入计时器。但我不知道该怎么做。任何的想法?
我的功能就像
def execute_db2_script(url)
db2_database = 'RATIONAL'
http_read_timeout=$http_read_timeout
uri = URI.parse(url)
start = Time.new
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)
end
rescue Timeout::Error
time_out_message ="security time out - after #{$http_read_timeout} sec"
return time_out_message
end
return response.body.gsub("\n","<BR>")
end