IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python Retry回调重试 -> 正文阅读

[Python知识库]Python Retry回调重试

retry的使用是用于
访问其他方法或者接口失败的时候,需要多次重复回调
查看具体的使用方法,参数如此之多,选择性使用

class Retrying(object):

    def __init__(self,
                 stop=None, wait=None,
                 stop_max_attempt_number=None,
                 stop_max_delay=None,
                 wait_fixed=None,
                 wait_random_min=None, wait_random_max=None,
                 wait_incrementing_start=None, wait_incrementing_increment=None,
                 wait_exponential_multiplier=None, wait_exponential_max=None,
                 retry_on_exception=None,
                 retry_on_result=None,
                 wrap_exception=False,
                 stop_func=None,
                 wait_func=None,
                 wait_jitter_max=None):

        self._stop_max_attempt_number = 5 if stop_max_attempt_number is None else stop_max_attempt_number
        self._stop_max_delay = 100 if stop_max_delay is None else stop_max_delay
        self._wait_fixed = 1000 if wait_fixed is None else wait_fixed
        self._wait_random_min = 0 if wait_random_min is None else wait_random_min
        self._wait_random_max = 1000 if wait_random_max is None else wait_random_max
        self._wait_incrementing_start = 0 if wait_incrementing_start is None else wait_incrementing_start
        self._wait_incrementing_increment = 100 if wait_incrementing_increment is None else wait_incrementing_increment
        self._wait_exponential_multiplier = 1 if wait_exponential_multiplier is None else wait_exponential_multiplier
        self._wait_exponential_max = MAX_WAIT if wait_exponential_max is None else wait_exponential_max
        self._wait_jitter_max = 0 if wait_jitter_max is None else wait_jitter_max

个人测试使用:
仅仅测试个别参数:
stop_max_attempt_number
stop_max_delay

retry参数说明:
retry(wait_fixed = 1000) #设置重试间隔时长(ms 1000ms = 1s)
retry(wait_random_min = 1000,wait_random_max = 2000,) #随机重试间隔,将在1~2s内
retry(stop_max_attempt_number = 3) #最大重试次数,超过后正常抛出异常
retry(stop_max_delay = 2000) #最大延迟时长,2s内未满足条件则抛出异常
retry(retry_on_exception = 自定义函数) #当发生指定异常时会执行函数
retry(retry_on_result=自定义函数) #每次都会执行函数,当返回返回True就重试,否则异常退出

from retrying import retry
import random
import time

"""
访问其他方法或者接口失败的时候,需要多次重复回调 
"""


class TestTrying:
    num_count = 0

    def __init__(self, attempts, max_stop):
        pass

    @retry(stop_max_attempt_number=10, stop_max_delay=2000) # 单位是ms 1s=1000ms
    def retries(self):
        # time.sleep(14)
        print("retry times and random value is :" + str(self.num_count))
        if self.num_count < 10:
            self.num_count = random.randint(0, 10)
            raise ValueError
        else:
            print('succeed!')
            print()


t = TestTrying(1, 2)
t.retries()

打印结果:

  File "/Users/brandonxian/PycharmProjects/pyspark_start/new_trip_pyspark/PythonUsing/retry_using.py", line 22, in retries
    raise ValueError
ValueError
retry times and random value is :0
retry times and random value is :0
retry times and random value is :7
retry times and random value is :7
retry times and random value is :1
retry times and random value is :2
retry times and random value is :3
retry times and random value is :8
retry times and random value is :5
retry times and random value is :0

调整最大重试次数:
更改最大重试次数为4:
结果:

retry times and random value is :0
retry times and random value is :4
retry times and random value is :1
retry times and random value is :5
Traceback (most recent call last):
  File "/Users/brandonxian/PycharmProjects/pyspark_start/new_trip_pyspark/PythonUsing/retry_using.py", line 29, in <module>

测试stop_max_delay 调整

重试次数加大,时间很短
@retry(stop_max_attempt_number=100000000, stop_max_delay=3000)
条件改为:
if self.num_count < 100:

再次测试,
发现无论如何会在3秒内触发异常

测试结束

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:36:21  更:2022-05-09 12:38:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:30:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码