RestClient::RequestTimeout 在控制器#method ruby 上 rails

RestClient::RequestTimeout in controller#method ruby on rails

我正在提出以下休息获取请求:

 rest_user = JSON.parse(RestClient.get APP_CONFIG['api_url'] + "users/", :params => {:token => APP_CONFIG['token'], :full => 'true'} )["users"] 

一分钟后我收到以下错误消息:

 RestClient::RequestTimeout in controller#method


rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:184:in `transmit'
rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute'
rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute'
rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient.rb:68:in `get'

现在,当我跟踪接收此请求的实际服务的日志时,它正在执行所请求的请求并在没有任何错误的情况下完成它。

但是消费者(Web 应用程序)在请求实际完全完成之前抛出请求超时错误。

完全正常。您的 Web 应用程序会引发错误,因为如果 RestClient 尚未收到响应,它会在 60 秒后引发错误。

您调用的应用不知道该事实,因此它会继续处理直到完成请求所需的时间(可能需要 61 秒、70 秒...)。

url = APP_CONFIG['api_url'] + "users/"
payload = {:token => APP_CONFIG['token'], :full => 'true'}
RestClient::Execute.execute(method: :get, url: url, payload: payload, timeout: 120)