Exponential backoff with jitter.
Project description
An exponential backoff implementation as described in an AWS architecture post. Uses full jitter.
Example
from expbackoff import Backoff
backoff = Backoff(base_seconds=0.5, max_seconds=120)
while True:
backoff.sleep() # Depending on previous failures, potentially delay before performing an action
success = do_a_thing() # Perform an action, record whether it succeeded
backoff.update(success) # Update the failure count
API
backoff = expbackoff.Backoff(...)
Create a Backoff object. Arguments:
base_seconds (required): Part of the backoff calculation, i.e base_seconds * 2 ^ (failures - 1)
max_seconds (required): Max seconds to delay, regardless of failure count.
failures (optional): Number of current failures. Useful if another service is handling your retries. Defaults to 0.
random (optional): A random object. Defaults to random.random.
backoff.sleep(): If failures have occurred, sleep for backoff.get_seconds_with_jitter()
backoff.update(success): Update the failure count by passing a boolean representing success.
backoff.get_seconds_with_jitter(): The current backoff time in seconds, with jitter applied. Zero if there are no recorded failures. Read-only.
backoff.get_raw_seconds(): The current backoff time in seconds, without jitter applied. Zero if there are no recorded failures. Read-only.
backoff.failures: The current number of failures. Read-only.
Alternatives
Popular options are retrying and backoff. These both use a decorator API so aren’t suitable for all uses - hence expbackoff.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file expbackoff-0.1.1.tar.gz
.
File metadata
- Download URL: expbackoff-0.1.1.tar.gz
- Upload date:
- Size: 2.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8549bbb512aa5808992d60796612e25e0691dcd71e3ba67b6e92c32782df909 |
|
MD5 | b8bed1808e382eb9fa8bd6da2ba3f2d6 |
|
BLAKE2b-256 | 962f8fd314cc28e264e6c090095546bec1e076c72c38ced175b00244cddb6e4f |