位置: 编程技术 - 正文

Python中异常重试的解决方案详解(python 异常处理方法)

编辑:rootadmin

推荐整理分享Python中异常重试的解决方案详解(python 异常处理方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 异常处理方法,python 异常处理方法,python异常后继续下一次循环,python异常处理后重新运行,python异常后继续执行,python异常处理后重新运行,python异常处理后重新运行,python异常后继续执行,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。

原先的流程:

改进后的流程:

Python中异常重试的解决方案详解(python 异常处理方法)

最近发现的新的解决方案:retrying

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

如果我们运行have_a_try函数,那么直到random.randint返回5,它才会执行结束,否则会一直重新执行。

retry还可以接受一些参数,这个从源码中Retrying类的初始化函数可以看到可选的参数:

stop_max_attempt_number:用来设定最大的尝试次数,超过该次数就停止重试 stop_max_delay:比如设置成,那么从被装饰的函数开始执行的时间点开始,到函数成功运行结束或者失败报错中止的时间点,只要这段时间超过秒,函数就不会再执行了 wait_fixed:设置在两次retrying之间的停留时间 wait_random_min和wait_random_max:用随机的方式产生两次retrying之间的停留时间 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。这个设计迎合了exponential backoff算法,可以减轻阻塞的情况。 我们可以指定要在出现哪些异常的时候再去retry,这个要用retry_on_exception传入一个函数对象:

在执行read_a_file函数的过程中,如果报出异常,那么这个异常会以形参exception传入retry_if_io_error函数中,如果exception是IOError那么就进行retry,如果不是就停止运行并抛出异常。

我们还可以指定要在得到哪些结果的时候去retry,这个要用retry_on_result传入一个函数对象:

在执行get_result成功后,会将函数的返回值通过形参result的形式传入retry_if_result_none函数中,如果返回值是None那么就进行retry,否则就结束并返回函数值。

总结

标签: python 异常处理方法

本文链接地址:https://www.jiuchutong.com/biancheng/375621.html 转载请保留说明!

上一篇:Django的信号机制详解(django的工作原理)

下一篇:Python部署web开发程序的几种方法(python web开发环境搭建)

  • 计提税费会计分录怎么填
  • 企业所得税如何做分录
  • 融资利息进项税如何抵扣
  • 缴纳税收凭证有原件吗
  • 资产负债表中未交税金负数表示什么
  • 机械设备租赁印花税谁交
  • 小规模纳税人可以开1%的专票吗
  • 销售大型设备的税率
  • 支付无法取得发票的赔偿金可否税前扣除
  • 怎么开具红票
  • 异地存货管理
  • 取得失控发票
  • 进项税额可以在买东西吗
  • 不征收耕地占用税的情形
  • 捐赠的固定资产按什么计价
  • 去年多计提费用,汇算清缴时做纳税调增处理
  • 往年银行余额和账目不符怎么调整
  • 电子税务局怎么查看已开发票
  • 税前利润弥补亏损
  • 增值税免税标准30万含不含税
  • 存货资产减值损失转回怎么做账
  • 股东之间转让股权需要股东会决议吗
  • 公司装修待摊费怎么算
  • 企业所得税汇算交税分录
  • 2017年8月21日是什么日子
  • PHP:zip_close()的用法_Zip函数
  • 转出固定资产账务处理
  • 记账凭证和会计分录的区别
  • 前端跨域的方法
  • batchsize1
  • php内置数组
  • 捐资民办学校可以盈利吗
  • php框架ci
  • 原材料计入什么凭证
  • vue中是如何划分的,每个区域的作用是什么
  • 给深度学习研究生的入门建议(未完待续ing)
  • 大前端最新
  • web前端框架是什么
  • gunzip命令压缩
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • 爬虫工程师简介
  • 低值易耗品如何界定
  • 固定资产每月计提还是每年计提
  • sql聚合语句
  • 开收据是财务还是出纳
  • 公司为职工承担社保费用
  • 其他货币资金期末有余额吗
  • 归纳投入外币资产怎么写
  • 海关报关单海关签章
  • 稳岗补贴操作流程
  • 员工奖励账务处理流程
  • 哪些凭证是有效凭证
  • 印花税的计税依据及税率
  • 公司注销后原有未使用的包装还可以用吗怎么办
  • 研发支出全部资本化能不能评高企
  • 原材料按实际成本核算与按计划成本核算相比
  • 生产费用明细账
  • sysbench内存性能测试
  • sql kill进程
  • mysql 5.7.17 winx64安装配置教程
  • mac下mysql密码忘记了怎么办
  • 如何延长手机电池使用寿命
  • centos7 ethtool
  • win8系统开机
  • linux常用命令find
  • win7进入dos的方法
  • tf.nn.tanh函数
  • dos批处理高级教程合编.pdf
  • shell脚本怎么导出
  • cmd读取d盘
  • jQuery中Nicescroll滚动条插件的用法
  • js过滤filter
  • fragment detach
  • jquery.validate 自定义验证方法及validate相关参数
  • node.js的理解
  • python基础入门教程
  • jq设置下拉框的值
  • 树形菜单html
  • 增值税纳税申报操作流程
  • 个体工商户如何申报个税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设