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 时,这意味着请求已发送并且它已经等待特定时间并且由于没有响应,在 time 内它过期并且您收到此错误。

始终指定更多时间,以便等待响应的时间更长。

于 2014-11-15T09:21:04.467 回答