Sha256: 542aeea9e22b18b03e567e156b44205db7632ca0f4a95f6be291de115f112ba7
Contents?: true
Size: 798 Bytes
Versions: 33
Compression:
Stored size: 798 Bytes
Contents
module SmartyStreets class RetrySender MAX_BACKOFF_DURATION = 10 STATUS_INTERNAL_SERVER_ERROR = 500 def initialize(max_retries, inner, sleeper, logger) @max_retries = max_retries @inner = inner @sleeper = sleeper @logger = logger end def send(request) response = @inner.send(request) (0..@max_retries-1).each do |i| break if response.status_code.to_i < STATUS_INTERNAL_SERVER_ERROR backoff(i) response = @inner.send(request) end response end def backoff(attempt) backoff_duration = [attempt, MAX_BACKOFF_DURATION].min @logger.log("There was an error processing the request. Retrying in #{backoff_duration} seconds...") @sleeper.sleep(backoff_duration) end end end
Version data entries
33 entries across 33 versions & 1 rubygems