0

アプリの横で 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 つから正確な応答が得られるまでループしたいと思います。

4

1 に答える 1

0

特定のエラー (BadResponseError) で begin..rescue 句を試すことができます。

 begin

 rescue Net::IMAP::BadResponseError, Net::IMAP::NoResponseError => e

 end

Rails が ActionPack のエラー処理にエラーを発生させる前に、アプリ コードのレスキュー句を実行するべきではありませんか? (質問の意味がよくわからないかもしれません)

Ruby で開始、レスキュー、確認?

于 2012-05-08T10:39:54.283 に答える