首页 > 编程语言 > 详细

Python tenacity库重试的使用

时间:2021-08-03 15:26:46      阅读:16      评论:0      收藏:0      [点我收藏+]

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

 1 import time
 2 
 3 import psycopg2
 4 import datetime
 5 from tenacity import *
 6 
 7 g_attempt = 0
 8 
 9 
10 # 直接再异常中进行代码的重试,需要一个global的变量做计数器,方法执行发生异常后重试5次,每次间隔10秒
11 def my_retry_function_v1(conn):
12     global g_attempt
13     conn = None
14     try:
15         conn = psycopg2.connect(**conn)
16         print(my_retry_function_v1 execute successfully)
17     except Exception as err:
18         g_attempt = g_attempt + 1
19         if g_attempt <= 5:
20             print(str(datetime.datetime.now()) + f :retry---> {str(err)} )
21             print(fretrying: {str(g_attempt)})
22             time.sleep(2)
23             return my_retry_function_v1(conn)
24         else:
25             #记录异常,这里仅用print示例
26             print(sent a alert notification)
27 
28     if conn:
29         return conn
30 
31 
32 #方法执行发生异常后重试5次,每次间隔10秒
33 @retry(stop=stop_after_attempt(5), wait=wait_fixed(10))
34 def my_retry_function_v2(conn):
35     conn = None
36     try:
37         conn = psycopg2.connect(**conn)
38         print(my_retry_function_v2 execute successfully)
39     except Exception as err:
40         print(datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S.%f) + f :retry---> {str(err)} )
41         #达到最大重试之后,记录异常信息
42         if (my_retry_function_v2.retry.statistics[attempt_number]) == 5:
43             #记录异常,这里仅用print示例
44             print(sent a alert notification)
45         else:
46             #未超出最大重试次数之前,显式抛出异常,继续重试
47             raise
48     if conn:
49         return conn
50 
51 
52 if __name__== __main__:
53     conn = {host: ‘***.***.***.***, database: postgres, user: postgres, password: ‘******,port:****}
54     my_retry_function_v1(conn)

 

  

Python tenacity库重试的使用

原文:https://www.cnblogs.com/wy123/p/15093729.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!