2014-05-13 3 views
1

문제점 : 원격 웹 서비스에 데이터를 게시 할 때 패러데이에서 다음 오류가 발생합니다. 이 오류는 임의의 사용자와 함께 임의로 발생합니다.원격 웹 서버에 사용자 데이터를 보낼 때 시간 초과 오류 ReadTimeout

오류 :

Farad​ay::E​rror:​:Time​outEr​ror: ​Net::​ReadT​imeou​t 

더 많은 정보 : 가 나는 또한 정말 재현 할 수없는, 나는 레일 아무것도 반환하지으로 시도했지만이 다른 오류가 발생합니다.

내가 다른 SO 주제를 볼 때 나는이 문제에 대한 진정한 해결책을 얻지 못한다. 어떤 것은 시간 초과 시간을 늘리라고 제안하지만 나는 꽤 높다고 생각한다. 요청을 수행

는 (요청 POST/GET을 수행)

def perform_request(verb, path, params = nil, body = nil) 
    conn = connection.dup 
    params ||= {} 
    # If params contains a token, it will used the `named` routes and 
    # set an authorization header 
    if params[:token] 
    path = ["named", path].join("/") 
    conn.headers["Authorization"] = "BasiC#{params.delete(:token)}" 
    else 
    path = ["anonymous", path].join("/") 
    end 

    # Remote service expects each body sent to it to be xml-encoded. 
    conn.headers["Content-Type"] = "application/xml" 
    conn.send(verb, path) do |request| 
    log "Path : #{verb.upcase} #{default_url}#{path}" 
    log "Params : #{params.inspect}" 
    log "Body : #{body.inspect[0..1000]}" 

    request.params = params if params 
    request.body = body if body 
    request.options[:timeout] = 120   # open/read timeout in seconds 
    # request.options[:open_timeout] = 15  # connection open timeout in seconds 
    end 
end 

연결 :

def connection 
    @connection ||= 
    begin 
     conn = Faraday.new(default_url) do |b| 
     b.use FaradayMiddleware::Mashify 
     b.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/ 
     b.adapter Faraday.default_adapter 
    end 
     conn.headers['User-Agent'] = 'be.company.hidden' 
     conn 
    end 
end 

기타 버전 정보 :

gem "faraday", "~> 0.8.1" 
gem "faraday_middleware", "~> 0.8.8" 
gem 'rails', '3.2.17' 
,

이 문제를 해결하기위한 제안을 주신 분께 감사드립니다.

+0

서버 측 문제 일 수 있습니까? 레일 외부의 서버에서 직접 요청을 시도 했습니까? – punkle

+0

안녕하세요 @ punkle 서버 문제 일 경우 더 많이 발생한다고 생각합니다. 1000 번 중이 코드는 생산 과정에서 패러데이 오류가 발생한 횟수의 3 배에 불과합니다. 그래서 나는 그것이 정말로 재현 가능하지 않다고 생각하지 않습니다. – Vinozio

답변