Module: StartHer::RetryPolicies
- Included in:
- RedisClient
- Defined in:
- lib/start_her/retry_policies.rb
Instance Method Summary collapse
-
#exponential_backoff(opts = {}, *exception_classes) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength.
Instance Method Details
#exponential_backoff(opts = {}, *exception_classes) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/start_her/retry_policies.rb', line 4 def exponential_backoff(opts = {}, *exception_classes) = { elapsed_time_secs: 600, multiplier: 2 } .merge!(opts) time = 0.2 started_at = Time.now.utc begin yield rescue *exception_classes => ex raise ex if (Time.now.utc - started_at) >= [:elapsed_time_secs] sleep(time) time *= [:multiplier] if (Time.now.utc - started_at) + time >= [:elapsed_time_secs] time = [:elapsed_time_secs] - (Time.now.utc - started_at) end retry end end |