具有抖动的指数退避。

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

备选方案

流行的选项是retryingbackoff。它们都使用 decorator api不适合所有用途-因此expbackoff

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法打印/获取2D数组的特定行   java替换JSP web应用程序中的默认resourceBundle和resourceControl实现   java将地图坐标转换为屏幕坐标   Guava地图中的java惰性驱逐   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   java有一个基于正则表达式的web servlet过滤器。xml?   java如何在Android中隐藏/显示表单?   java 7的简单代码度量独立maven插件   sockets java中哪种技术可用于在两个不同系统之间传输大量同步数据?   java无法处理我的导航菜单项的单击事件   java阵列输出必须是一年中的几个月   java Elasticsearch错误:MapperParsingException:无法分析   java 安卓复制文件显示错误   JSF2.2JavaJSF网站使用BootsFaces页面直接构建   Java中while循环的BigO   java如何使用AspectJ在AOP中创建每个类、每个对象和每个方法/源位置部分的方面   从地图查看java文本   java如何从线程触发PropertyChange事件?   java Spring引导在运行时添加和删除单例