class FaradayMiddleware::Request::RetryUtil
Standalone HTTP request retry utility class Can be used outside of FaradayMiddleware
, e.g. when Faraday::UploadIO is used
Constants
- DEFAULT_ERROR_CODES
- DEFAULT_RETRY_AFTER
Attributes
error_codes[RW]
retry_after[RW]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/faraday_middleware-request-retry/retry.rb, line 42 def initialize(opts = {}) @error_codes = opts[:error_codes] || DEFAULT_ERROR_CODES @retry_after = opts[:retry_after] || DEFAULT_RETRY_AFTER @logger = opts[:logger] end
Public Instance Methods
retry_status(status, this_retry_after = nil)
click to toggle source
# File lib/faraday_middleware-request-retry/retry.rb, line 48 def retry_status(status, this_retry_after = nil) return false unless @error_codes.include? status seconds_left = (this_retry_after || @retry_after).to_i @logger.warn "You have been rate limited. Retrying in #{seconds_left} seconds..." if @logger seconds_left.times do |i| sleep 1 time_left = seconds_left - i @logger.warn "#{time_left}..." if time_left > 0 && time_left % 5 == 0 && @logger end @logger.warn 'Retrying...' if @logger true end