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