Ruby on Rails中的HTTPClient :: ReceiveTimeoutError

yag*_*sun 6 timeout ruby-on-rails httpclient

嗨,我正在使用HTTPClient gem,我有一个问题; 我用它来进行用户注册.虽然运行用户名和密码插入到我的数据库,但它等待很长时间并返回给我

HTTP Client::ReceiveTimeout Error in User Controller#signup execution expired.
Run Code Online (Sandbox Code Playgroud)

我该如何解决我的问题?

yag*_*sun 13

用于receive_timeout错误;

client = HTTPClient.new
client.receive_timeout = 10000    # setting receivetimeout for HTTPClient!
Run Code Online (Sandbox Code Playgroud)

  • 你也可以设置`send_timeout = 0`和`receive_timeout = 0`不要超时. (5认同)

all*_*kim 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
Run Code Online (Sandbox Code Playgroud)