1
문제점 : 원격 웹 서비스에 데이터를 게시 할 때 패러데이에서 다음 오류가 발생합니다. 이 오류는 임의의 사용자와 함께 임의로 발생합니다.원격 웹 서버에 사용자 데이터를 보낼 때 시간 초과 오류 ReadTimeout
오류 :
Faraday::Error::TimeoutError: Net::ReadTimeout
더 많은 정보 : 가 나는 또한 정말 재현 할 수없는, 나는 레일 아무것도 반환하지으로 시도했지만이 다른 오류가 발생합니다.
내가 다른 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'
,
이 문제를 해결하기위한 제안을 주신 분께 감사드립니다.
서버 측 문제 일 수 있습니까? 레일 외부의 서버에서 직접 요청을 시도 했습니까? – punkle
안녕하세요 @ punkle 서버 문제 일 경우 더 많이 발생한다고 생각합니다. 1000 번 중이 코드는 생산 과정에서 패러데이 오류가 발생한 횟수의 3 배에 불과합니다. 그래서 나는 그것이 정말로 재현 가능하지 않다고 생각하지 않습니다. – Vinozio