Class: Belpost::Retry

Inherits:
Object
  • Object
show all
Defined in:
lib/belpost/retry.rb

Constant Summary collapse

MAX_RETRIES =
3
INITIAL_DELAY =
1

Class Method Summary collapse

Class Method Details

.with_retry(max_retries: MAX_RETRIES, initial_delay: INITIAL_DELAY) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/belpost/retry.rb', line 8

def self.with_retry(max_retries: MAX_RETRIES, initial_delay: INITIAL_DELAY)
  retries = 0
  delay = initial_delay

  begin
    yield
  rescue NetworkError, TimeoutError, ServerError => e
    retries += 1
    if retries <= max_retries
      sleep(delay)
      delay *= 2
      retry
    else
      raise e
    end
  end
end