安装模块:pip3 install retrying

使用方式:

  1. 使用retrying模块提供的retry模块
  2. 通过装饰器的方式使用,让装饰器的函数反复的执行
  3. retry可以传入参数stop_max_attempt_number,让函数报错后继续重新执行,达到最大执行次数的上线,如果每次都报错,整个函数就报错,只要中间有一个成功了的话,程序就可以继续往后面执行了

例子:

from retrying import retry
@retry(stop_max_attempt_number=5,wait_random_min=1000,wait_random_max=5000)
def run():
print("开始重试")
raise NameError if __name__ == '__main__':
run()

首先导入了retry模块

然后装饰了一个run函数,函数中很简单,主要就是通过raise跑出了一个异常,执行这个代码 我们可以发现,程序打印了五次开始重试,最后一次抛出异常,NameError,那么到了这里我们就可以感受到,就是这么简单的代码,就完成了五次重试,同时这五次重试的间隔时间也是不同的,要是想尝试重复十次以上的的话,就需要把上面的stop_max_attempt_number改成10就可以了,到这里就可以解释retry装饰器的参数了

retry的使用就是这么简单,关键是装饰器里面的参数的使用,要是不写参数的话就会一直一种重试

stop_max_attempt_number

    在停止之前尝试的最大次数,最后一次如果还是有异常就会抛出异常,停止运行,默认是五次(强调总次数)

stop_max_delay

    最大延迟时间,大概的意思就是:如果调用的函数抛出异常了,那么就会重复调用这个函数,最大调用时间,默认100毫秒

  

wait_random_min

    在两次调用方法停留时长,停留最短的时间,默认是0

wait_random_max

    在两次调用方法停留时长,停留最长时间,默认是1000毫秒

wait_incrementing_increment

    每调用一次就会增加的时长,默认是100毫秒

wait_exponential_multiplier和wait_exponential_max

    以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,如果产生的这个值超过了wait_exponential_max的大小,那么之后两个retrying之间的停留值都为wait_exponential_max

retry_on_exception

    指定一个函数,如果这个函数返回指定异常,就会重试,如果不是指定的异常就会推出

from retrying import retry
def run2(exception):
return isinstance(exception, ZeroDivisionError)
@retry(retry_on_exception=run2)
def run():
print("开始重试")
a = 1 / 0
if __name__ == '__main__':
run()

retry_on_result

    指定一个函数,如果指定的函数返回True,就重试,否则抛出异常退出

rom retrying import retry
def run2(r):
return isinstance(r, int)
@retry(retry_on_result=run2)
def run():
print("开始重试")
a = 1
return a
if __name__ == '__main__':
run()

wrap_exception

    参数设置为True/False,如果指定的异常类型,包裹在retryError中,就会看到RetryError和程序抛出的Exception error

stop_func

    每次抛出异常的时候都会执行的函数,如果stop_max_delay、stop_max_attmpt_number配合使用,则后两个就会失效,指定的stop_func会有两个参数:attempt、delay

wait_func

    和stop_func的用法差不多,就不过多的描述了

ps:如果没有捕获到异常,就会从该层外层的异常重试触发;尝试两次失败会报错,所以在再次使用处理,跳出报错,直接pass

retrying模块的使用的更多相关文章

  1. retrying模块的学习

    retrying模块的学习 我们在写爬虫的过程中,经常遇到爬取失败的情况,这个时候我们一般会通过try块去进行重试,但是每次都写那么一堆try块,真的是太麻烦,所以今天就来说一个比较pythonic的 ...

  2. retrying模块的安装及使用

    安装retrying模块: win10用户在联网的情况下直接在cmd.exe里面键入"pip install retrying"  即可安装retrying模板 在网页正常浏览的过 ...

  3. retrying 模块

    我们在写爬虫的过程中,经常遇到爬取失败的情况,这个时候我们一般会通过 try 块去进行重试,但是每次都写那么一堆 try 块,真的是太麻烦了,所以今天就来说一个比较 pythonic 的模块,retr ...

  4. Python重试模块retrying

    Python重试模块retrying 工作中经常碰到的问题就是,某个方法出现了异常,重试几次.循环重复一个方法是很常见的.比如爬虫中的获取代理,对获取失败的情况进行重试. 刚开始搜的几个博客讲的有点问 ...

  5. 爬虫学习(二)requests模块的使用

    一.requests的概述 requests模块是用于发送网络请求,返回响应数据.底层实现是urllib,而且简单易用,在python2.python3中通用,能够自动帮助我们解压(gzip压缩的等) ...

  6. python 爬虫与数据可视化--爬虫基础知识

    一.python中的模块 模块的安装:pip install 模块名 导入模块与函数:import requests . from pymongo import MongoClient json模块的 ...

  7. 转--python 黑魔法2

    Python 高效编程小技巧 个人博客:临风|刀背藏身 Python 一直被我拿来写算法题,小程序,因为他使用起来太方便了,各种niubi闪闪的技能点也在写算法的过程中逐渐被挖掘到,感谢万能的谷哥度娘 ...

  8. Python爬虫一

    爬虫 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应, 一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫 ...

  9. <爬虫>相关的知识

    1.概念.工具和HTTP 什么是爬虫 模拟客户端发送网络请求,获取响应,按照规则提取数据 爬虫的数据去哪了 展示到网页上(百度新闻,今日头条) 进行分析,从数据中寻找规律(指数网站:百度指数) 需要的 ...

随机推荐

  1. USART 串口

    串口不工作 请逐一检查: 是否正确配置复用IO口(先用RCC_APB2PeriphClockCmd在RCC寄存器中先开启GPIOx的时钟使能,再用 GPIO_Init 进行IO复用配置) 是否正确配置 ...

  2. k8s常用的资源

    1. 创建pod资源 pod是最小的资源单位 任何一个k8s资源都可以有yml清单文件来定义 k8s yaml的主要组成 apiVersion: v1 api版本 kind: pod 资源类型 met ...

  3. 第二十一篇:spring怎么做缓存

     项目背景:你可能遇情景:1.一个做统计的页面,每次刷新需要调接口做查询 ,是联表查询,查出来的数据还需要做一些计算或者加工,不算页面上的图表插件,刷新一次,延迟个几秒钟才出的来2. 一个统计接口如此 ...

  4. idea的安装与破解

    1.下载 官网:https://www.jetbrains.com/idea/download/#section=windows 百度盘:https://pan.baidu.com/s/16mRNPK ...

  5. 在windows中用cmd命令执行python无限循环程序如何停止

    在windows中用cmd命令测试python带有无限循环的程序,当想要终止时, 即linux中的Ctrl + D 相似的功能时可以用 Ctrl + Pause Break, 有FN功能键的可能要使用 ...

  6. JSONObjectSample

    package com.egeniuss.platform.basic; import java.util.ArrayList; import java.util.HashMap; import ja ...

  7. hadoop 环境下不知道yarn端口可以通过此命令查找

    yarn jar hadoop-examples-2.6.0-mr1-cdh5.10.0.jar pi 1 30 hadoop-examples-2.6.0-mr1-cdh5.10.0.jar 此JA ...

  8. Struts2基本总结

    现在Struts2慢慢退出舞台了,但是很多项目还需要用Struts2进行开发和维护,这里就简单的重新快速的掌握这门技术 Struts2的相关配置文件 * default.properties     ...

  9. 【颓废篇】人生苦短, 我用python(二)

    当时产生学习python的欲望便是在看dalao们写脚本的时候… 虽然dalao们好像用的是js来着.. 不过现在好像很多爬虫也可以用python写啊… 所以学python没什么不妥. 而且csdn整 ...

  10. sqllocaldb

    创建实例  sqllocaldb create v12.0 启动实例 sqllocaldb start v12.0