Module: Legion::Extensions::Mlx::Helpers::Errors

Defined in:
lib/legion/extensions/mlx/helpers/errors.rb

Constant Summary collapse

MAX_RETRIES =
3
BASE_DELAY =
0.5
MAX_DELAY =
16
RETRYABLE_EXCEPTIONS =
[
  Faraday::TimeoutError,
  Faraday::ConnectionFailed
].freeze

Class Method Summary collapse

Class Method Details

.retryable?(exception) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/legion/extensions/mlx/helpers/errors.rb', line 19

def retryable?(exception)
  RETRYABLE_EXCEPTIONS.any? { |klass| exception.is_a?(klass) }
end

.with_retry(max_retries: MAX_RETRIES) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/legion/extensions/mlx/helpers/errors.rb', line 23

def with_retry(max_retries: MAX_RETRIES)
  retries = 0
  begin
    yield
  rescue *RETRYABLE_EXCEPTIONS
    retries += 1
    raise if retries > max_retries

    delay = [BASE_DELAY * (2**(retries - 1)), MAX_DELAY].min
    sleep(delay)
    retry
  end
end