Class: FaradayMiddleware::Request::RetryUtil
- Inherits:
-
Object
- Object
- FaradayMiddleware::Request::RetryUtil
- Defined in:
- lib/faraday_middleware-request-retry/retry.rb
Overview
Standalone HTTP request retry utility class Can be used outside of FaradayMiddleware, e.g. when Faraday::UploadIO is used
Constant Summary collapse
- DEFAULT_ERROR_CODES =
[429, 503].freeze
- DEFAULT_RETRY_AFTER =
10
Instance Attribute Summary collapse
-
#error_codes ⇒ Object
Returns the value of attribute error_codes.
-
#retry_after ⇒ Object
Returns the value of attribute retry_after.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ RetryUtil
constructor
A new instance of RetryUtil.
- #retry_status(status, this_retry_after = nil) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ RetryUtil
Returns a new instance of RetryUtil.
42 43 44 45 46 |
# 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 |
Instance Attribute Details
#error_codes ⇒ Object
Returns the value of attribute error_codes.
39 40 41 |
# File 'lib/faraday_middleware-request-retry/retry.rb', line 39 def error_codes @error_codes end |
#retry_after ⇒ Object
Returns the value of attribute retry_after.
40 41 42 |
# File 'lib/faraday_middleware-request-retry/retry.rb', line 40 def retry_after @retry_after end |
Instance Method Details
#retry_status(status, this_retry_after = nil) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# 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 |