Module: Legion::Extensions::ServiceNow::Helpers::Retry

Included in:
Client
Defined in:
lib/legion/extensions/service_now/helpers/retry.rb

Constant Summary collapse

MAX_RETRIES =
3
BASE_DELAY =
1.0

Instance Method Summary collapse

Instance Method Details

#with_retry(max_retries: MAX_RETRIES) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/service_now/helpers/retry.rb', line 11

def with_retry(max_retries: MAX_RETRIES)
  attempts = 0
  begin
    attempts += 1
    yield
  rescue Errors::RateLimitError => e
    raise e if attempts >= max_retries

    sleep(BASE_DELAY * (2**(attempts - 1)))
    retry
  rescue Errors::ServerError => e
    raise e if attempts >= max_retries

    sleep(BASE_DELAY)
    retry
  end
end