46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/forecast/hardy_client.rb', line 46
def retry_rate_limits
retries = 0
retry_func = lambda do |e|
if retries < @max_retries
retries += 1
true
else
raise e
end
end
begin
yield
rescue Forecast::RateLimited => e
seconds = if e.response.["retry-after"]
e.response.["retry-after"].to_i
else
16
end
sleep(seconds)
retry
rescue Forecast::Unavailable, Harvest::InformHarvest => e
would_retry = retry_func.call(e)
sleep(16) if @client.account.rate_limit_status.over_limit?
retry if would_retry
rescue Net::HTTPError, Net::HTTPFatalError => e
retry if retry_func.call(e)
rescue SystemCallError => e
retry if e.is_a?(Errno::ECONNRESET) && retry_func.call(e)
end
end
|