module Crea::Retriable
Constants
- MAX_BACKOFF
@private
- MAX_RETRY_COUNT
@private
- MAX_RETRY_ELAPSE
- RETRYABLE_EXCEPTIONS
Public Instance Methods
can_retry?(e = nil)
click to toggle source
# File lib/crea/mixins/retriable.rb, line 16 def can_retry?(e = nil) @retry_count ||= 0 return false if @retry_count >= MAX_RETRY_COUNT @retry_count = if retry_reset? @first_retry_at = nil else @retry_count + 1 end can_retry = case e when *RETRYABLE_EXCEPTIONS then true else; false end backoff if can_retry can_retry end
Private Instance Methods
backoff()
click to toggle source
Expontential backoff.
@private
# File lib/crea/mixins/retriable.rb, line 50 def backoff @backoff ||= 0.1 @backoff *= 2 @backoff = 0.1 if @backoff > MAX_BACKOFF sleep @backoff end
first_retry_at()
click to toggle source
@private
# File lib/crea/mixins/retriable.rb, line 38 def first_retry_at @first_retry_at ||= Time.now.utc end
retry_reset?()
click to toggle source
@private
# File lib/crea/mixins/retriable.rb, line 43 def retry_reset? Time.now.utc - first_retry_at > MAX_RETRY_ELAPSE end