アプリの横で 3 つのサーバーを実行しており、それらに RESTful 要求を送信していますが、正確な応答が得られるまでこれら 3 つのうちの 1 つを試行するループが必要です。私の実行では、最初のサーバー プログラムから Bad Respond が発生すると、「BadRespondError」が発生し、実行が「actionpack」gem の rescue.rb に移動するため、コードでレスキューできません。どうすればその問題を解決できますか? 単純なループだけで例外とエラーに対処せずに解決できますか、それが不可能な場合は、rescue.rb 以外のコードで BadRespondError をレスキューするにはどうすればよいですか
ここに私のコードがリクエストされています....
@response = carrot.dcs_request(uri, {
"dcs.source" => "etools",
"query" => @query,
"dcs.output.format" => "JSON",
"dcs.clusters.only" => "false"
})
@json = @response
@response = JSON.parse(@response)
....
リクエスト機能
def dcs_request(uri, data)
boundary = Array::new(16) { "%2.2d" % rand(99) }.join()
extheader = {
"content-type" => "multipart/form-data; boundary=___#{ boundary }___"
}
client = HTTPClient.new
response = client.post_content(uri, data, extheader)
end
uri を配列のように考えて、そのうちの 1 つから正確な応答が得られるまでループしたいと思います。