我在我的应用程序旁边运行了 3 台服务器,我正在向它们发送 RESTful 请求,但我希望有一个循环尝试这三个服务器之一,直到它得到准确的响应。在我的执行中,当它从第一个服务器程序获得错误响应时会引发“BadRespondError”,我无法在我的代码中拯救它,因为执行会转到“actionpack”gem 中的rescue.rb。我怎么能解决这个问题?我可以在不处理异常和错误的情况下仅通过一个简单的循环来解决它吗?或者如果不可能,我怎么能在我的代码中拯救 BadRespondError 而不是 rescue.rb
这是我的代码请求....
@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 想象成一个数组,我想循环它,直到我得到其中一个的准确响应。