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