Python自動重試HTTP連接裝飾器
有時(shí)候我們要去別的接口取數(shù)據(jù),可能因?yàn)榫W(wǎng)絡(luò)原因偶爾失敗,為了能自動重試,寫了這么一個裝飾器。
這個是python2.7x 的版本,python3.x可以用 nonlocal 來重寫。
#-*- coding: utf-8 -*-
#all decorators in this tool file
#author: orangleliu
############################################################
#http連接有問題時(shí)候,自動重連
def conn_try_again(function):
RETRIES = 0
#重試的次數(shù)
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):
#根據(jù)webluker接口情況獲取計(jì)費(fèi)數(shù)據(jù)
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次。
相關(guān)文章
python的mysql數(shù)據(jù)庫建立表與插入數(shù)據(jù)操作示例
這篇文章主要介紹了python的mysql數(shù)據(jù)庫建立表與插入數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了python操作mysql數(shù)據(jù)庫建立表與插入數(shù)據(jù)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-09
Python使用multiprocessing創(chuàng)建進(jìn)程的方法
這篇文章主要介紹了Python使用multiprocessing創(chuàng)建進(jìn)程的方法,實(shí)例分析了multiprocessing模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-06-06
用Python實(shí)現(xiàn)命令行鬧鐘腳本實(shí)例
今天我們講一下用Python寫的一個小腳本。這是一個可以在命令行運(yùn)行的鬧鐘腳本,對于日常大家工作很實(shí)用,有需要的朋友們可以參考借鑒。2016-09-09
Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯解決方法詳解
這篇文章主要介紹了Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯解決方法詳解,需要的朋友可以參考下2020-02-02
Anaconda安裝之后Spyder打不開解決辦法(親測有效!)
這篇文章主要給大家介紹了關(guān)于Anaconda安裝之后Spyder打不開解決辦法,文中將解決的過程介紹的非常詳細(xì),親測有效,對同樣遇到這個問題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04
利用Django提供的ModelForm增刪改數(shù)據(jù)的方法
這篇文章主要介紹了利用Django提供的ModelForm增刪改數(shù)據(jù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
python定時(shí)任務(wù) sched模塊用法實(shí)例
這篇文章主要介紹了python定時(shí)任務(wù) sched模塊用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

