gpt4 book ai didi

Python自动重试HTTP连接装饰器

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python自动重试HTTP连接装饰器由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

有时候我们要去别的接口取数据,可能因为网络原因偶尔失败,为了能自动重试,写了这么一个装饰器。 这个是python2.7x 的版本,python3.x可以用 nonlocal 来重写.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#-*- coding: utf-8 -*- 
#all decorators in this tool file
#author: orangleliu
 
############################################################
#http连接有问题时候,自动重连
def conn_try_again(function):
   RETRIES = 0
   #重试的次数
   count = { "num" : RETRIES}
   def wrapped( * args, * * kwargs):
     try :
       return function( * args, * * kwargs)
     except Exception, err:
       if count[ 'num' ] < 2 :
         count[ 'num' ] + = 1
         return wrapped( * args, * * kwargs)         
       else :
         raise Exception(err)
   return wrapped

用法很的简单,下面是一个程序片段.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@conn_try_again
def post_query_bandwidth_for_bandwidth( self , contract_no, data_month, product_code):
   #根据webluker接口情况获取计费数据  
   try :
     post_data = { 'contract' :contract_no, 'month' : data_month, 'code' :product_code}
     params = urllib.urlencode(post_data)
     response = urllib2.urlopen(WEBLUKER_BANDWITH_API + "?" + params)
     billdata = {}
     billdata = response.read()
     if not billdata:
       billdata = {}
     return billdata
   except Exception, err:
     err = u '与webluker接口间通信异常'
     raise Exception(err)

如果try块中有异常,就会自动重试2次.

最后此篇关于Python自动重试HTTP连接装饰器的文章就讲到这里了,如果你想了解更多关于Python自动重试HTTP连接装饰器的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com