Python自動(dòng)重試HTTP連接裝飾器
有時(shí)候我們要去別的接口取數(shù)據(jù),可能因?yàn)榫W(wǎng)絡(luò)原因偶爾失敗,為了能自動(dòng)重試,寫了這么一個(gè)裝飾器。
這個(gè)是python2.7x 的版本,python3.x可以用 nonlocal 來(lái)重寫。
#-*- coding: utf-8 -*-
#all decorators in this tool file
#author: orangleliu
############################################################
#http連接有問(wèn)題時(shí)候,自動(dòng)重連
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
用法很的簡(jiǎn)單,下面是一個(gè)程序片段。
@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塊中有異常,就會(huì)自動(dòng)重試2次。
相關(guān)文章
python的mysql數(shù)據(jù)庫(kù)建立表與插入數(shù)據(jù)操作示例
這篇文章主要介紹了python的mysql數(shù)據(jù)庫(kù)建立表與插入數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了python操作mysql數(shù)據(jù)庫(kù)建立表與插入數(shù)據(jù)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-09
一文詳述 Python 中的 property 語(yǔ)法
這篇文章主要介紹了一文詳述 Python 中的 property 語(yǔ)法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-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寫的一個(gè)小腳本。這是一個(gè)可以在命令行運(yùn)行的鬧鐘腳本,對(duì)于日常大家工作很實(shí)用,有需要的朋友們可以參考借鑒。2016-09-09
Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯(cuò)解決方法詳解
這篇文章主要介紹了Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯(cuò)解決方法詳解,需要的朋友可以參考下2020-02-02
Anaconda安裝之后Spyder打不開(kāi)解決辦法(親測(cè)有效!)
這篇文章主要給大家介紹了關(guān)于Anaconda安裝之后Spyder打不開(kāi)解決辦法,文中將解決的過(guò)程介紹的非常詳細(xì),親測(cè)有效,對(duì)同樣遇到這個(gè)問(wèn)題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04
利用Django提供的ModelForm增刪改數(shù)據(jù)的方法
這篇文章主要介紹了利用Django提供的ModelForm增刪改數(shù)據(jù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python?設(shè)計(jì)模式行為型訪問(wèn)者模式
這篇文章主要介紹了Python?設(shè)計(jì)模式行為型訪問(wèn)者模式,訪問(wèn)者模式即Visitor?Pattern,訪問(wèn)者模式,指作用于一個(gè)對(duì)象結(jié)構(gòu)體上的元素的操作,下文相關(guān)資料需要的小伙伴可以參考一下2022-02-02
python定時(shí)任務(wù) sched模塊用法實(shí)例
這篇文章主要介紹了python定時(shí)任務(wù) sched模塊用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

