编写装饰器实现python请求错误重试功能

2019-10-17 03:29栏目:王中王今日开奖结果
TAG:

在做接口自动化测量检验的时候,总会境遇,因延续超时等颠倒是非产生,接口脚本退步。

法定给出的章程:

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 ConnectionError
import requests
def 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 ConnectionError

def 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

 

版权声明:本文由493333王中王开奖结果发布于王中王今日开奖结果,转载请注明出处:编写装饰器实现python请求错误重试功能