带抖动的指数退避。
项目描述
根据AWS架构帖子中描述的指数退避实现。使用全抖动。
示例
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(...)
创建Backoff对象。参数
base_seconds (必需): 退避计算的一部分,即 base_seconds * 2 ^ (failures - 1)
max_seconds (必需): 最大延迟秒数,无论失败次数。
failures (可选): 当前失败次数。如果另一个服务正在处理您的重试,则很有用。默认为 0。
random (可选): 一个 random 对象。默认为 random.random。
backoff.sleep(): 如果已发生失败,则暂停 backoff.get_seconds_with_jitter()
backoff.update(success): 通过传递表示成功的布尔值来更新失败计数。
backoff.get_seconds_with_jitter(): 应用抖动后的当前退避时间(秒)。如果没有记录失败,则为零。只读。
backoff.get_raw_seconds(): 应用抖动后的当前退避时间(秒)。如果没有记录失败,则为零。只读。
backoff.failures: 当前失败次数。只读。
替代方案
流行的选项是 retrying 和 backoff。这两个都使用装饰器API,因此不适用于所有用途 - 因此有 expbackoff。
项目详情
关闭
expbackoff-0.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8549bbb512aa5808992d60796612e25e0691dcd71e3ba67b6e92c32782df909 |
|
MD5 | b8bed1808e382eb9fa8bd6da2ba3f2d6 |
|
BLAKE2b-256 | 962f8fd314cc28e264e6c090095546bec1e076c72c38ced175b00244cddb6e4f |