HTTPClient::ReceiveTimeoutError in Ruby on Rails



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

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

相关内容

  • 没有找到相关文章

最新更新