博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】retrying模块使用场景
阅读量:4099 次
发布时间:2019-05-25

本文共 1219 字,大约阅读时间需要 4 分钟。

大家在做数据抓取或者用selenium自动化进行元素定位的时候,经常遇到由于网络问题导致的抓取数据失败,或者定位元素失败。

针对这种情况,我们可以通过设置等待时间去控制,其实还有一种方法,就是使用retrying,它提供一个装饰器函数retry,被装饰的函数会在运行失败的条件下重新执行,默认只要一直报错就会不断重试。
假设我们希望从随机数1~9中得到0,意思是一直随机下去,直到生成随机数0结束。
步骤如下:
1.安装retrying模块 pip install retrying
2.具体代码如下:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''#作者:cacho_37967865#博客:https://blog.csdn.net/sinat_37967865#文件:retryModel.py#日期:2018-09-22#备注:pip install retrying  提供一个装饰器函数retry'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import randomfrom retrying import retry@retry  #提供一个装饰器函数retry,被装饰的函数就会在运行失败的条件下重新执行,默认只要一直报错就会不断重试。def getFixRandom():    a = random.randint(0, 10)    if a > 0:        print(a, "不满足要求")        raise IOError("如果想要永远走else分支,使用raise IOError()")    else:        print ("必须返回为0才结束")        print(a,"此时满足要求,结束函数")getFixRandom()

3.retrying模块简单介绍

stop_max_attempt_number:用来设定最大的尝试次数,超过该次数就停止重试
stop_max_delay:比如设置成100,那么从被装饰的函数开始执行的时间点开始,到函数成功运行结束或者失败报错中止的时间点,只要这段时间超过0.1秒,函数就不会再执行了
wait_fixed:设置在两次retrying之间的停留时间
wait_random_min和wait_random_max:用随机的方式产生两次retrying之间的停留时间
wait_exponential_multiplier和wait_exponential_max:以指数的形式产生两次retrying之间的停留时间

你可能感兴趣的文章
都无代码了,还要程序员吗?
查看>>
面试想拿 10K,HR 说我只配7k?
查看>>
副业过万的程序员都知道的网站有哪些
查看>>
那些人生“开挂”的程序员,都在干什么?
查看>>
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>
假如计算机是中国人发明的,那代码应该这么写
查看>>
科技公司最爱的 50 款开源工具,你都用过吗?
查看>>
触目惊心:比特币到底消耗了多少能源?
查看>>
面试官:简历上敢写技术精通?那我就不客气了!
查看>>
如何判断一家互联网公司要倒闭了?
查看>>
想快速上手机器学习?来看下这个 GitHub 项目!
查看>>
GitHub 标星 3.6k,一本开源的深度学习中文教程!
查看>>
9 款你不能错过的 JSON 工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
200页!分享珍藏很久的Python学习知识手册(附链接)
查看>>
程序员之神
查看>>
4 岁小女孩给 Linux 内核贡献提交
查看>>