香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python自动重试HTTP连接装饰器


时间:2021-11-29 16:23 作者:admin


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

#-*- 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 

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

@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次。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)