编写装饰器实现python请求错误重试功能
在做接口自动化测试的时候,总会遇到,因连接超时等错误导致,接口脚本失败。
官方给出的方法:
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
编写装饰器实现python请求错误重试功能的更多相关文章
- Atitit php java python nodejs错误日志功能的比较
Atitit php java python nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...
- Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器
from flask import Flask from flask import request from flask import render_template from flask_wtf i ...
- python :编写装饰器
简单装饰器 def log_time(func): # 此函数的作用时接受被修饰的函数的引用test,然后被内部函数使用 def make_decorater(): print('现在开始装饰') f ...
- python装饰器实现HTTP请求耗时和入参返回日志记录
装饰器方法: 1 def decoArgs(server_name): 2 def deco(func): 3 def wrapper(view, request, *args, **kwargs): ...
- [Python之路] 使用装饰器给Web框架添加路由功能(静态、动态、伪静态URL)
一.观察以下代码 以下来自 Python实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦) 中的mini_frame最后版本的代码: import time def in ...
- 装饰器(python)
一,装饰器定义:本质就是函数,功能是为其他函数添加新功能原则:1.不修改被装饰函数的源代码(开放封闭原则)2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式3.装饰器=高阶函数+函数嵌套+闭包高 ...
- 递归,装饰器,python常用内置方法
**递归** def calc(n): print(n) if int(n / 2) == 0: 条件判断 r ...
- Python装饰器,Python闭包
可参考:https://www.cnblogs.com/lianyingteng/p/7743876.html suqare(5)等价于power(2)(5):cube(5)等价于power(3)(5 ...
- <每日一题>题目2:编写装饰器,为多个函数加上认证功能(用户账号和密码来源于文件)
这里做个最简单的账号密码验证,主要为了实现装饰器同时对多个函数起作用 FLAG = False #加一个变量防止多次登录验证 def wrapper(f): def inner(*args,**kwa ...
随机推荐
- mongodb常用查询语法
一.查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): se ...
- springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.
一.前言: 使用springboot自动注入的方式搭建好了工程,结果启动的时候报错了!!!,错误如下图: Description: Field userEntityMapper in com.xxx. ...
- SpringBoot 全配置(推荐收藏)
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...
- xdebug php 运行效率分析工具
Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况. 官网:https://xdebug.org/index.php 安装方法: ht ...
- win10 快速访问关闭
1. 右键 --- 选项 2. 选择:此电脑
- [Golang] 编译程序时打上git提交信息标记
1.加入代码 //version.go package version import ( "flag" "fmt" "os" ) var ( ...
- IOS如何安装ipa文件
https://www.i4.cn/pro_ios.html#jiaocheng 用电脑下载 爱思助手PC端 然后电脑连接 苹果手机, 用 安装的 爱思助手PC端 软件 安装 “爱思助手移动端” 下载 ...
- postgresql免密码登录
https://www.postgresql.org/docs/8.3/static/libpq-pgpass.html vi ~/.pgpass 输入以下内容 hostname:port:datab ...
- python2.7环境下的flask项目导入模块失败解决办法
如下一个flask项目的目录: 这个flask项目在python3.6环境下可以正常启动,但是在python2.7环境下如下报错提示: 提醒模块找不到.如下解决方法: 只需要在views目录里面加一个 ...
- HBASE的Java与Javaweb(采用MVC模式)实现增删改查附带源码
项目文件截图 Java运行截图 package domain; import java.io.IOException; import java.util.ArrayList; import java. ...