Python异常重试
如果某些方法需要vb.net教程重试,之前都是自己在except里写代码,很多时候实现起来并不方便,而且复杂逻辑下大大增加代码量和影响可读性,尝试了一下tenacity库,重试机制非常简单易用且清晰,且比retrying库简洁很多。
1,第一种常规方式,不借助第三方库,需要自行再except里写代码,真个方python教程法显得十分臃肿
2,第二种方法使用tenacity库,实现起来非常优雅、轻便,当然tenacity库有非常强大的功能,有必要再探索。
demo一下数据库连接的异常重试实现,终于不用再自己写臃肿的重试逻辑了。

import timeimport psycopg2
import datetime
from tenacity import *g_attempt = 0# 直接再异常中进行代码的重试,需要一个global的变量做计数器,
# 当方法执行发生异常后重试5次,每次间隔10秒
def my_retry_function_v1(conn):global g_attemptconn = Nonetry:conn = psycopg2.connect(**conn)print('my_retry_function execute successfully')g_attempt = 0except Exception as err:g_attempt = g_attempt + 1if g_attempt <= 5:print(str(datetime.datetime.now()) + f' :retry---> {str(err)} ')print(f'retrying: {str(g_attempt)}')time.sleep(10)return my_retry_function_v1(conn)else:#记录异常,这里仅用print示例print('sent a alert notification')if conn:return conn#方法执行发生异常后重试5次,每次间隔10秒
@retry(stop=stop_after_attempt(5), wait=wait_fixed(10))
def my_retry_function_v2(conn):conn = Nonetry:conn = psycopg2.connect(**conn)print('my_retry_function execute successfully')except Exception as err:print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') + f' :retry---> {str(err)} ')#达到最大重试之后,记录异常信息if (my_retry_function_v2.retry.statistics['attempt_number']) == 5:#记录异常,这里仅用print示例print('sent a alert notification')else:#未超出最大重试次数之前,显式抛出异常,继续重试raiseif conn:return connif __name__== '__main__':conn = {'host': '*', 'database': 'postgres', 'user': 'postgres', 'password': '*','port':*}my_retry_function_v1(conn)

使用Python的tenacity库实现异常重试机制相关推荐

  1. Python之Requests库的异常

    Python之Requests库的异常 参考文章: (1)Python之Requests库的异常 (2)https://www.cnblogs.com/BASE64/p/10285466.html 备 ...

  2. Spring异常重试机制 - Spring Retry

    目录 一 . 引入依赖 二 . 在启用类或业务类上添加@EnableRetry注解启用重试机制(在启用类上添加全局有效 , 在业务类上添加仅当前有效) 三 . 使用@Retryable实现重试 四 . ...

  3. rabbimq消费者实现异常重试机制

    功能描述 异常重试指的是当消费者处理消息异常失败时,为保证数据最终一致性,通过设置重试策略来对消息进行重复再消费.对于重试策略我们指定延迟多长时间重试一次,重试多少次,以及时间单位等. 策略描述 原理 ...

  4. tenacity 报错_tenacity 重试

    tenacity 重试 简介 为了避免由于一些网络或等其他不可控因素,而引起的功能性问题.比如在发送请求时,会因为网络不稳定,往往会有请求超时的问题. 这种情况下,我们通常会在代码中加入重试的代码.重 ...

  5. Java基础学习总结(172)——手写Java 重试机制

    package com.zhy.common.retry;import java.util.Arrays;import org.apache.commons.lang3.StringUtils; im ...

  6. python之Tenacity重试库的使用

    目录 安装 Tenacity 导入 Tenacity 模块 为需要重试的函数添加装饰器 调用重试函数 常用的重试方法 Tenacity 示例 Tenacity 是一个用于 Python 的重试库,它提 ...

  7. 已解决(Python爬虫requests库报错 请求异常SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool

    成功解决(Python爬虫requests库报错 请求异常,SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool(host= ...

  8. Python异常重试解决方案 Python中异常重试的解决方案详解

    想了解Python中异常重试的解决方案详解的相关内容吗,标点符在本文为您仔细讲解Python异常重试解决方案的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python,重试,python ...

  9. python脚本运行时网络异常_Python中异常重试的解决方案详解

    前言 大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理. 原先的流程: def crawl_page(url): pass def log_ ...

  10. Python安装sklearn库时出现异常:ERROR: Could not install packages due to an EnvironmentError: [Errno 2]

    文章目录 一.问题描述 二.问题解决 一.问题描述 今天在学习python机器学习时,需要安装python的sklearn库,在安装的过程中出现了以下错误 上CSDN上找了好多文章,都没办法解决问题 ...

最新文章

  1. javaweb学习总结——Filter高级开发
  2. Windows系统——VMTK安装教程
  3. objective-c中Category类别(扩展类)专题总结
  4. Vue根据条件添加click事件
  5. Android O: View的绘制流程(一): 创建和加载
  6. mc穿越时空地图android,我的世界RPG地图穿越时空地图存档下载
  7. 学会java要多久_多长时间可以学会Java?
  8. 计算机组成原理同步测试,计算机组成原理白中英单元练习题
  9. wget 下载百度网盘文件
  10. MySql -- 数据库备份工具xtrabackup
  11. STM32F4+W25Q64实现一个U盘
  12. \t转义字符占几个字节?
  13. 搭建FTP服务器后访问时出现“FTP文件夹错误 无法与服务器建立连接”的解决办法
  14. 疫情可视化(visualization)
  15. 搜狗大变动!搜狗收录接下来怎么做?
  16. zabbix 5系列之snmp监控详解
  17. 你真的知道什么是三观吗?
  18. 浮点类型的比较,精度控制(float.h的利用 ,DBL_EPSILON)
  19. CCIE重认证--350-401-补充题库-也是必须的哟
  20. C++阶段06笔记01【基于STL的演讲比赛流程管理系统】

热门文章

  1. PBI培训(3):Power BI主题设置方法汇总及示例
  2. 软件工程 实践者的研究方法 第12章答案
  3. 网站调用服务器字体,网站调用字体库
  4. 将自己的app加入到分享列表中,并适配锤子的one step功能
  5. 悼念王选:伟大发明家和失意企业家间的孤独者
  6. 模仿支付宝支付成功特效:svg圆圈转动+打钩
  7. 随意切换双卡流量,立即获取对应卡的SMIS
  8. 个人修改机智云apk之出现couldn‘t find “libSDKLog.so“错误导致机智云apk在真机上调试出现keeps stopping错误解决方法
  9. vivo手机便签app下载,vivo自带便签软件下载
  10. 488. 祖玛游戏【我亦无他唯手熟尔】