位置: 编程技术 - 正文

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开发环境搭建)

  • 非居民个人利息所得个税税率
  • 公司清理固定资产汽车怎么开票
  • 个人出租商铺如何缴纳房产税
  • 自然人扣缴系统初次登录怎么设置密码
  • 费用日记账明细
  • 建筑简易征收需要成本发票吗
  • 税控盘280抵扣报税填在
  • 资产总额和权益总额必然相等吗
  • 市区增值税附征怎么填
  • 嵌入式软件产品的批准放行
  • 可供出售金融资产是指什么
  • 税收用在哪些方面
  • 销项负数发票用勾选吗
  • 道路施工企业的财务核算包括
  • 固定资产盘盈可计入
  • 企业购买固定资产的价款超过正常信用条件
  • 共用水电费税前扣除比例
  • 公司使用个人车辆费用是多少
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 税号里面有字母吗
  • 破产清算重整和解
  • 在天猫店铺后台中的提现怎么做会计分录?
  • 工业企业采购原材料
  • 工伤补偿是否缴纳医保
  • 是否所有监控设备都录像
  • 起诉销售
  • 其他公司垫付货款合法吗
  • 建筑企业按什么确认收入
  • 购买商品接受劳务的现金流包括哪些
  • 收到发票怎么写说明
  • 网络和共享中心在哪里打开
  • 已抵扣的进项税额红冲的账怎么做
  • 计入固定资产成本的费用
  • 赡养老人支出如果有四个子女都要填吗
  • linux的系统设置在哪
  • 销售方收到购买方的红字信息表
  • 企业以非货币性资产投资
  • 汽车运输企业的实际成本计算单位是
  • 在途物资运费会计科目怎么写
  • 划转国有划拨土地流程
  • 融资租赁售后回租账务处理
  • node.js教程详细
  • 探望生病职工的话语
  • 增值税发票认证期限是多久
  • 固定资产盘盈为什么计入以前年度损益调整
  • 研发费用范围归集不正确
  • php 操作mongodb
  • 领取定额备用金的会计分录
  • 事业单位财政拨款收入会计分录
  • 不能税前扣除的业务招待费怎么处理
  • 净利润和毛利润谁大
  • 汽车修理费用会计分录
  • 个体工商户营业执照注销流程
  • 销项税用转出吗
  • 企业所得税汇算清缴操作流程
  • 进项税额转出期限是多久
  • 中标服务费如何赋码
  • 去年购进的货物怎么做账
  • 事业单位利息收入的正确分录
  • 土地使用税退税怎么做会计分录
  • 为什么小规模纳税人少
  • 哪些收入不需要开票
  • 虚拟机linux端mysql数据库无法远程访问的解决办法
  • ubuntu图片查看
  • 苹果mac电脑打不开
  • windows照片查看器在哪打开
  • win7更改win10系统要怎么更改
  • xp系统屏幕倒过来了怎么恢复
  • 怎样取消进windows 密码
  • mac电脑打开safari
  • 家字取名男孩名字
  • linux删除lun
  • ie11forwindows10
  • perl ne
  • 安卓开发遇到的问题
  • javascript不严谨
  • Unity的Attribute(特性)还算多吧
  • unity的shader用法
  • Android ImageLoader 本地缓存
  • android 数据库
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设