跳转到主要内容

带抖动的指数退避。

项目描述

根据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: 当前失败次数。只读。

替代方案

流行的选项是 retryingbackoff。这两个都使用装饰器API,因此不适用于所有用途 - 因此有 expbackoff

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分布

expbackoff-0.1.1.tar.gz (2.5 kB 查看哈希值)

上传时间:

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面