6

こんにちは、私は HTTPClient gem を使用していますが、問題があります。ユーザー登録に使用しています。実行中にユーザー名とパスワードがデータベースに挿入されますが、長い間待機して戻ってきます

HTTP Client::ReceiveTimeout Error in User Controller#signup execution expired.

どうすれば問題を解決できますか?

4

3 に答える 3

13

receive_timeout エラーに使用します。

client = HTTPClient.new
client.receive_timeout = 10000    # setting receivetimeout for HTTPClient!
于 2012-04-11T12:48:30.677 に答える
5

http 接続またはリモート接続が安定していないと思います。そのような状況が発生するたびに、タイムアウトを使用して数回再試行します。次のコードはコードを 10 秒間実行し、完了していない場合はタイムアウトして再試行します。リトライが何度も失敗すると、いずれ失敗します。

def timeout_and_retry
  retries = 0
  begin
    Timeout::timeout(10) { yield }
  rescue Timeout::Error
    raise if (self.retries += 1) > 3
    retry
  end
end

timeout_and_retry do
   # http client get code goes here
end
于 2012-04-05T15:45:31.133 に答える
0

HTTP:ReceiveTimeOutError を取得するたびに、リクエストが送信され、特定の時間の待機が完了し、時間内に応答がないため、期限切れになり、このエラーが発生することを意味します。

応答をより長く待機するように、常により多くの時間を指定してください。

于 2014-11-15T09:21:04.467 に答える