method
determine_delay
v8.0.0 -
Show latest stable
- Class:
ActiveJob::Exceptions
determine_delay(seconds_or_duration_or_algorithm:, executions:, jitter: JITTER_DEFAULT)private
No documentation available.
# File activejob/lib/active_job/exceptions.rb, line 161
def determine_delay(seconds_or_duration_or_algorithm,, executions,, jitter: JITTER_DEFAULT)
jitter = jitter == JITTER_DEFAULT ? self.class.retry_jitter : (jitter || 0.0)
case seconds_or_duration_or_algorithm
when :polynomially_longer
# This delay uses a polynomial backoff strategy, which was previously misnamed as exponential
delay = executions**4
delay_jitter = determine_jitter_for_delay(delay, jitter)
delay + delay_jitter + 2
when ActiveSupport::Duration, Integer
delay = seconds_or_duration_or_algorithm.to_i
delay_jitter = determine_jitter_for_delay(delay, jitter)
delay + delay_jitter
when Proc
algorithm = seconds_or_duration_or_algorithm
algorithm.call(executions)
else
raise "Couldn't determine a delay based on #{seconds_or_duration_or_algorithm.inspect}"
end
end