我正在进行以下休息获取请求:
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应用程序)正在抛出请求超时错误。
答案 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)