具有抖动的指数退避。
expbackoff的Python项目详细描述
如AWS architecture post中所述的指数退避实现。使用完全抖动。
示例
fromexpbackoffimportBackoffbackoff=Backoff(base_seconds=0.5,max_seconds=120)whileTrue:backoff.sleep()# Depending on previous failures, potentially delay before performing an actionsuccess=do_a_thing()# Perform an action, record whether it succeededbackoff.update(success)# Update the failure count
API
- backoff = expbackoff.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:当前失败次数。只读。