[−][src]Crate backoff
ExponentialBackoff
is a backoff implementation that increases the backoff
period for each retry attempt using a randomization function that grows exponentially.
next_backoff
is calculated using the following formula:
randomized interval = retry_interval * (random value in range [1 - randomization_factor, 1 + randomization_factor])
In other words next_backoff
will range between the randomization factor
percentage below and above the retry interval.
For example, given the following parameters:
retry_interval = 2 randomization_factor = 0.5 multiplier = 2
the actual backoff period used in the next retry attempt will range between 1 and 3 seconds, multiplied by the exponential, that is, between 2 and 6 seconds.
Note: max_interval
caps the retry_interval
and not the randomized interval.
If the time elapsed since an ExponentialBackoff
instance is created goes past the
max_elapsed_time
, then the method next_backoff
starts returning None
.
The elapsed time can be reset by calling reset
.
Example: Given the following default arguments, for 10 tries the sequence will be,
and assuming we go over the max_elapsed_time
on the 10th try:
Request # | retry_interval (seconds) | Randomized Interval (seconds) |
---|---|---|
1 | 0.5 | [0.25, 0.75] |
2 | 0.75 | [0.375, 1.125] |
3 | 1.125 | [0.562, 1.687] |
4 | 1.687 | [0.8435, 2.53] |
5 | 2.53 | [1.265, 3.795] |
6 | 3.795 | [1.897, 5.692] |
7 | 5.692 | [2.846, 8.538] |
8 | 8.538 | [4.269, 12.807] |
9 | 12.807 | [6.403, 19.210] |
10 | 19.210 | None |
Modules
backoff | |
default | Constants for the exponential backoff policy. |
exponential |
Structs
SystemClock |
|
Enums
Error | Error is the error value in an operation's result. |
Traits
Clock | Clock returns the current time. |
Notify | Notify is called in |
Operation | Operation is an operation that can be retried if it fails. |
Type Definitions
ExponentialBackoff | Exponential backoff policy with system's clock. |