Class: AiClient::RetryMiddleware
- Inherits:
-
Object
- Object
- AiClient::RetryMiddleware
- Defined in:
- lib/ai_client/retry_middleware.rb
Instance Method Summary collapse
- #call(client, next_middleware, *args) ⇒ Object
-
#initialize(max_retries: 3, base_delay: 1, max_delay: 16) ⇒ RetryMiddleware
constructor
A new instance of RetryMiddleware.
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 |