RestClient :: RequestTimeout in controller#method ruby​​ on rails

时间:2015-05-14 20:38:03

标签: ruby-on-rails ruby ruby-on-rails-3 rest-client

我正在进行以下休息获取请求:

 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应用程序)正在抛出请求超时错误。

1 个答案:

答案 0 :(得分:0)

绝对正常。您的网络应用会引发错误,因为如果尚未收到响应,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)