Class: AiClient::RetryMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/ai_client/retry_middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(max_retries: 3, base_delay: 1, max_delay: 16) ⇒ RetryMiddleware

Returns a new instance of RetryMiddleware.



5
6
7
8
9
# File 'lib/ai_client/retry_middleware.rb', line 5

def initialize(max_retries: 3, base_delay: 1, max_delay: 16)
  @max_retries  = max_retries
  @base_delay   = base_delay
  @max_delay    = max_delay
end

Instance Method Details

#call(client, next_middleware, *args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ai_client/retry_middleware.rb', line 11

def call(client, next_middleware, *args)
  @retries  = 0
  @client   = client

  begin
    next_middleware.call
  rescue OmniAI::RateLimitError, OmniAI::NetworkError => e
    if @retries < @max_retries
      delay = retry_delay(e)
      log_retry(delay, e)
      sleep(delay)
      retry
    else
      raise
    end
  end
end