編寫裝飾器實現python請求錯誤重試功能

來源:互聯網
上載者:User

標籤:exce   import   from   error   指令碼   int   pad   raise   nec   

在做介面自動化測試的時候,總會遇到,因連線逾時等錯誤導致,介面指令碼失敗。

官方給出的方法:

max_retries=5 出錯重試5次
注意的是,這個只對DNS,串連錯誤進行重試。
    from requests.adapters import HTTPAdapter    s = requests.Session()    s.mount(‘http://‘,HTTPAdapter(max_retries=5))    s.mount(‘https://‘,HTTPAdapter(max_retries=5))    s.get(‘https://www.baidu.com‘)

 

 

自編寫裝飾器一

from requests.exceptions import ConnectionErrorimport requestsdef retry(**kw):    def war(func):        def w(*args,**kwargs):            try:                ret = func(*args,**kwargs)            except ConnectionError:                kw[‘reNum‘] = int(kw[‘reNum‘]) - 1                if kw[‘reNum‘] >=0:                    print kw[‘reNum‘]                    ret = w(*args,**kwargs)                else:                    ret = ConnectionError            return ret        return w    return war

 

自編寫裝飾器二

from requests.exceptions import ConnectionErrordef retry(**kw):    def wrapper(func):        def _wrapper(*args,**kwargs):            raise_ex = None            for _ in range(kw[‘reNum‘]):                print _                try:                    return func(*args,**kwargs)                except ConnectionError as ex:                    raise_ex = ex            #raise raise_ex        return _wrapper    return wrapper

 

使用方法:reNum = 5 代表,出現ConnectionError時最多可重試5次。

@retry(reNum=5)def demo():    raise ConnectionError

 

總結:

1.編寫裝飾器,其實沒有那麼難,只要掌握方法。 這個可以參考,我之前寫的關於裝飾器的文章

2.裝飾器的通熟解釋,就是在函數之前後之後做點什麼。通過這個我們可以做很多。

3.關於請求串連錯誤,重試,裝飾器;原理就是做一個迴圈,只要捕獲到有ConnectionError 錯誤,就進入下一次迴圈

調用;只要有正確的時候,直接返回函數。

 

qq技術交流群,期待你的加入:

python|測試|技術交流群:563227894

python|測試|技術交流群:563227894

python|測試|技術交流群:563227894

 

編寫裝飾器實現python請求錯誤重試功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.