こんにちは、私は HTTPClient gem を使用していますが、問題があります。ユーザー登録に使用しています。実行中にユーザー名とパスワードがデータベースに挿入されますが、長い間待機して戻ってきます
HTTP Client::ReceiveTimeout Error in User Controller#signup execution expired.
どうすれば問題を解決できますか?
こんにちは、私は HTTPClient gem を使用していますが、問題があります。ユーザー登録に使用しています。実行中にユーザー名とパスワードがデータベースに挿入されますが、長い間待機して戻ってきます
HTTP Client::ReceiveTimeout Error in User Controller#signup execution expired.
どうすれば問題を解決できますか?
receive_timeout エラーに使用します。
client = HTTPClient.new
client.receive_timeout = 10000 # setting receivetimeout for HTTPClient!
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
HTTP:ReceiveTimeOutError を取得するたびに、リクエストが送信され、特定の時間の待機が完了し、時間内に応答がないため、期限切れになり、このエラーが発生することを意味します。
応答をより長く待機するように、常により多くの時間を指定してください。