python3:retrying模块

2023-10-26

retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段,retrying提供一个装饰器函数retry,被装饰的函数就在运行失败的情况下将重新执行,默认只要一直报错就会不断重试

Web sit:

https://github.com/rholder/retrying

https://pypi.org/project/retrying/

安装:

pip install retrying

Examples

默认行为是永远重试而不等待.

@retry
def never_give_up_never_surrender():
    print("永远重试忽略异常,不要在重试之间等待")

Let’s be a little less persistent and set some boundaries, such as the number of attempts before giving up.

让我们不那么执着,并设置一些界限,例如放弃之前的尝试次

@retry(stop_max_attempt_number=7)
def stop_after_7_attempts():
    print("7次尝试后停止")

We don’t have all day, so let’s set a boundary for how long we should be retrying stuff.

让我们设置一个边界,我们应该多久重试一下

@retry(stop_max_delay=10000)
def stop_after_10_s():
    print("10秒后停止")

Most things don’t like to be polled as fast as possible, so let’s just wait 2 seconds between retries.

大多数事情都不希望尽可能快地进行轮询,所以让我们在重试之间等待2秒钟

@retry(wait_fixed=2000)
def wait_2_s():
    print("重试之间等待2秒")

Some things perform best with a bit of randomness injected.

有些东西注入了一点随机性将会表现的更好

@retry(wait_random_min=1000, wait_random_max=2000)
def wait_random_1_to_2_s():
    print("重试之间随机等待1到2秒")

Then again, it’s hard to beat exponential backoff when retrying distributed services and other remote endpoints.

@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000)
def wait_exponential_1000():
    print("每次重试之间等待2 ^ x * 1000毫秒,最多10秒,然后10秒")

We have a few options for dealing with retries that raise specific or general exceptions, as in the cases here.

def retry_if_io_error(exception):
    """Return True if we should retry (in this case when it's an IOError), False otherwise"""
    return isinstance(exception, IOError)

@retry(retry_on_exception=retry_if_io_error)
def might_io_error():
    print "Retry forever with no wait if an IOError occurs, raise any other errors"

@retry(retry_on_exception=retry_if_io_error, wrap_exception=True)
def only_raise_retry_error_when_not_io_error():
    print "Retry forever with no wait if an IOError occurs, raise any other errors wrapped in RetryError"

We can also use the result of the function to alter the behavior of retrying.

def retry_if_result_none(result):
    """Return True if we should retry (in this case when result is None), False otherwise"""
    return result is None

@retry(retry_on_result=retry_if_result_none)
def might_return_none():
    print "Retry forever ignoring Exceptions with no wait if return value is None"

参考实例:

https://blog.csdn.net/lxy210781/article/details/94778320

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3:retrying模块 的相关文章

随机推荐

  • SVN客户端TortoiseSVN基本使用方法步骤-初人指南

    本文将讲述SVN客户端TortoiseSVN基本使用方法步骤 模拟两个客户端与服务器之间的关系 操作包括 SVN commit 提交 SVN checkout 检出 SVN Update 更新 如上图所示 工作模式是 客户端从服务器中SVN
  • 神经网络 专业术语解释(Step、Batch Size、Iteration、Epoch)

    目录 1 名词解释 2 换算关系 3 举例说明 1 名词解释 Step 步 训练模型的步数 遍历学习一次训练集数据所需要的Batch数量 跟iteration一样 Batch Size 批尺寸 计算梯度所需的样本数量 太小会导致效率低下 无
  • oracle生成uuid函数

    sys guid
  • 抖音自媒体平台上最容易上热门的7大领域,你知道吗?

    抖音覆盖的内容领域日益广泛 因此 运营者在入驻抖音平台的时候不能过于草率 不能单纯地根据个人偏好来确定账号的运营方向 本文将主要介绍在抖音平台上最容易上热门的7大领域 以此来帮助运营者更好地进行账号的定位 接下来运营喵就和大家分享下 1 搞
  • 机器人学重点知识点总结

    机器人学重点知识点总结 坐标转换与机械臂运动学 雅克比矩阵 机械臂逆向动力学 牛顿欧拉递推 机械臂正向动力学 运动轨迹生成 动力学轨迹跟踪控制 这篇博客主要用来记录一下现代机器人学里面比较基础也比较重要的一些知识点 所有内容均仅仅记录是什么
  • [蓝桥杯][2013年第四届真题]幸运数

    题目 题目链接 题解 两种方法 DFS 模拟 先讲大佬的DFS 再讲我的模拟 分别对应代码1和代码2 代码3是根据大佬代码改进的我的模拟 推荐代码1和代码3 从幸运数字3开始每次都将 通过幸运数字更新过的数组中当前幸运数字的下一个数字 作为
  • 一文搞懂线性回归和逻辑回归

    1 线性回归 Linear Regression 1 介绍 线性回归是机器学习中最基础 最经典的算法之一 它利用线性函数对一个或多个自变量和因变量之间关系进行建模 建模过程就是使用数据点来寻找最佳拟合线 线性回归分为两种类型 单变量线性回归
  • 【网络篇】第一篇——网络入门基础

    计算机网络背景 网络发展 认识 协议 初识网络 网络协议初始 协议分层 OSI七层模型 TCP IP五层 或四层 模型 网络传输基本流程 同局域网的两台主机通信 跨网络的两台主机通信 网络中的地址管理 认识IP地址 认识MAC地址 计算机网
  • win10主题更换_Win10桌面最全美化指南!(任务栏透明+dock栏+磁贴美化+壁纸)

    点点关注不迷路 先看成品 知乎视频 www zhihu com 其他历史桌面 这两个桌面都是动态桌面 我是分割线 目录 桌面归类 任务栏美化 Dock栏美化 心形磁贴美化 动态桌面 护眼软件 桌面插件 仿Mac美化 壁纸 我是分割线 桌面归
  • Python数据分析8-时间序列

    目录 8 1datetime模块 8 1 1datetime的构造 8 1 2数据转换 8 2时间序列基础 8 2 1时间序列构造 8 2 2索引与切片 8 3日期 8 3 1日期范围 8 3 2频率与移动 8 4时期 8 4 1时期基础
  • 什么是推荐系统?推荐系统类型、用例和应用

    推荐系统是机器学习的一类 它可使用数据来帮助预测 缩小范围 并找到人们在呈指数级增长的选项中寻找的内容 什么是推荐系统 推荐系统是一种人工智能或人工智能算法 通常与机器学习相关 使用大数据向消费者建议或推荐其他产品 这些推荐可以基于各种标准
  • 构建IoT系统必须的五项内容 (Page 3)

    本文译至 http japan zdnet com article 35076390 3 2 高度的分析实现 抽取出的高精度特征值适用于机器学习算法 从时间序列数据计算异常度 自动检查异常状况或变化点 图5 等 能应用于人眼难以判断的现象的
  • C++中如何进行txt文件的读入和写入

    大家可能大部分写代码都是在devc或者 vs里面直接输入数据 这一般常见于简单算法和数据的处理 但是一旦处理大数据的话 几百万 几千万 上亿个数据手打似乎不能轻易实现的 那么这篇文章我们来搞懂C 环境下如何进行io流读取txt文件 其实我们
  • MYSQL:如何清空表中的数据(一张表和多张表)

    方法1 delete from 表名 方法2 truncate table 表名 比 较 1 gt truncate 是整体删除 速度较快 delete是逐条删除 速度较慢 2 gt truncate 不写服务器 log delete 写服
  • 如何设置笔记本电脑扩展屏幕的亮度

    方法一 通过外设显示屏的本身按钮直接调节 方法二 打开控制面板 查看方式 小图标 英特尔 显卡设置 颜色设置 选择显示器 亮度 对比度调节 或鼠标右键找到英特尔 显卡设置
  • C++ 51.基于多态的职工管理系统(7)——删除职工功能

    功能描述 按照员工的编号进行删除职工操作1 删除职工函数声明 在workerManager h中添加成员函数 删除职工 void Del Emp 2 职工是否存在函数声明 按照职工编号判断职工是否存在 在workerManager h中添加
  • matlab数字和字符串转换

    一 数字转字符串 1 整数转字符串 int1 10 num2str int1 2 小数转字符串 dec1 1 23456 1 方法1 num2str dec1 6 保留6位有效数 2 方法2 num2str dec1 6f 保留小数点后6位
  • 解决axios发送数据到后端中文乱码问题

    解决axios发送数据到后端中文乱码问题 axios请求 const that this axios method post url http localhost 8080 2 SelectByIdServlet data this stu
  • Altium Designer22中修改元件库后,更新原理图的2种方法及这2种方法的区别。

    PCB设计过程中 经常会涉及到修改原理图库和PCB库的情况 那么修改了这些库之后 如何更新到已经绘制好的原理图中呢 更新过程中 如果想保留设置好的description footprint和value等属性 又该如何设置呢 方法一 在原理图
  • python3:retrying模块

    retrying是一个python的重试包 可以用来自动重试一些可能运行失败的程序段 retrying提供一个装饰器函数retry 被装饰的函数就在运行失败的情况下将重新执行 默认只要一直报错就会不断重试 Web sit https git