2014-10-08 8 views
4

httpaty (0.13.1) gem을 사용하고 있습니다. httpaty를 사용하여 일련의 API 호출을 만들고 있습니다. 초기 API 호출 중 일부는 성공했지만 이후 호출은 연속적으로 실패합니다. 나는 180 초의 타임 아웃을 추가했다. 나는 구글을 검색했지만 아직 어떤 해결책을 찾을 수 없다. 나는 이것 때문에 오랫동안 고투하고있다.HTTParty에서 Net :: ReadTimeout 오류 처리

내 코드 :

response = HTTParty.get("http://pubapi.cryptsy.com/api.php?method=marketdatav2", timeout: 180) 

오류 :이 타임 아웃이 작동하는지 모르겠어요

A Net::ReadTimeout occurred in background at 2014-10-05 11:42:06 UTC : 

? 기본 타임 아웃이 60 초이기 때문에 180 초가 응답을 검색하기에 충분하다고 생각합니다. Net read timeout error를 처리하고 싶다면 그것을 할 수있는 방법이 있습니까? 이 오류가 발생하면 nil을 반환하려고합니다. 또는이 오류가 발생하지 않도록 최선의 해결책이 있습니까?

+0

해결 되었습니까? 또한 일련의 API 호출에 대해 동일한 문제가 발생합니다. 시간 초과는 나를 위해 일하지 않습니다. –

답변

4

당신은 당신의 시간 제한 예외 처리에 rescue을 사용할 수

begin 
    HTTParty.get("http://pubapi.cryptsy.com/api.php?method=marketdatav2", timeout: 180) 
rescue Net::ReadTimeout 
    nil 
end 
+0

이것은 문제를 해결하지 않고 오류 만 처리합니다. – ObjectNameDisplay

9

다른 모듈과 비슷한 문제가 있고, 시도 경우 제 경우에 가능성이, 그래서 타임 아웃을 잡아 다시 시도 성공합니다.

max_retries = 3 
    times_retried = 0 

    begin 
    #thing that errors sometimes 

    rescue Net::ReadTimeout => error 
    if times_retried < max_retries 
     times_retried += 1 
     puts "Failed to <do the thing>, retry #{times_retried}/#{max_retries}" 
     retry 
    else 
     puts "Exiting script. <explanation of why this is unlikely to recover>" 
     exit(1) 
    end 
    end 

다른 사람이 도움이 될 경우를 대비하여 여기에 올 수 있습니다.