首页 > 编程语言 >【python学习】retry库用法大全!附示例代码

【python学习】retry库用法大全!附示例代码

时间:2024-07-27 21:25:04浏览次数:11  
标签:function ... retry 函数 示例 python 重试 test

Retry 是一个用于 Python 的库,用于在函数调用失败时自动重试。它的目标是简化重试逻辑的编写,处理由于临时性问题(如网络故障、API 限制等)导致的失败。Retry 的主要特点包括:

  1. 简单易用:只需使用装饰器或上下文管理器即可实现重试功能。
  2. 灵活配置:可以配置重试次数、重试间隔、异常处理等。
  3. 支持自定义重试逻辑:可以自定义哪些异常触发重试、重试的等待时间等。

下面通过代码演示 Retry 的几个最核心的功能:

安装 Retry

你可以通过 pip 安装 Retry:

pip install retry

基本使用

from retry import retry

# 装饰器实现重试
@retry()
def test_function():
    print("尝试执行函数...")
    raise Exception("函数执行失败")  # 输出: 尝试执行函数...(重试3次后,抛出异常)

test_function()

配置重试参数

from retry import retry

# 配置重试次数和重试间隔
@retry(tries=3, delay=2)
def test_function():
    print("尝试执行函数...")
    raise Exception("函数执行失败")  # 输出: 尝试执行函数...(每隔2秒重试一次,重试3次后,抛出异常)

test_function()

只对特定异常进行重试

from retry import retry

# 只对特定异常进行重试
@retry(exceptions=ValueError, tries=3)
def test_function():
    print("尝试执行函数...")
    raise ValueError("值错误")  # 输出: 尝试执行函数...(重试3次后,抛出异常)

test_function()

自定义重试间隔

from retry import retry
import random

# 自定义重试间隔
@retry(delay=2, backoff=2)
def test_function():
    print("尝试执行函数...")
    if random.random() < 0.5:
        raise Exception("函数执行失败")  # 输出: 尝试执行函数...(如果失败,重试时间隔会逐渐增加)

test_function()

捕获并处理异常

from retry import retry

# 捕获并处理异常
@retry(tries=3, delay=2)
def test_function():
    print("尝试执行函数...")
    raise Exception("函数执行失败")  # 输出: 尝试执行函数...(重试3次后,抛出异常)

try:
    test_function()
except Exception as e:
    print(f"最终失败,异常信息: {e}")  # 输出: 最终失败,异常信息: 函数执行失败

在上下文管理器中使用

from retry.api import retry_call

def test_function():
    print("尝试执行函数...")
    raise Exception("函数执行失败")  # 输出: 尝试执行函数...(重试3次后,抛出异常)

try:
    retry_call(test_function, tries=3, delay=2)
except Exception as e:
    print(f"最终失败,异常信息: {e}")  # 输出: 最终失败,异常信息: 函数执行失败

标签:function,...,retry,函数,示例,python,重试,test
From: https://blog.csdn.net/m0_54007171/article/details/140741565

相关文章

  • 最长的Hello, World!(Python)
    最长的Hello,World!(Python)(lambda_,__,___,____,_____,______,_______,________:getattr(__import__(True.__class__.__name__[_]+[].__class__.__name__[__]),().__class__.__eq__.__class__.__name__[:__]+().__iter__().__cla......
  • Python 教程(二):语法与数据结构
    目录前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码运算符`list`、`set`和`dict`数据结构区别1.list(列表)2.set(集合)3.dict(字典)总结前言Python是一种计算机编程语言。每种编程语言都有自己的语法规则。在本教程中,我们将学......
  • Python 可变长参数的魔法:灵活函数设计的秘密
    哈喽,大家好,我是木头左!什么是可变长参数?在Python中,可变长参数允许你向函数传入任意数量的参数,而无需预先定义它们的个数。这为编写更加灵活和通用的函数提供了可能。可变长参数主要有两种形式:*args用于非关键字参数,**kwargs用于关键字参数。*args:非关键字可变长参数当你......
  • 【每日一练】python求最后一个单词的长度
    """求某变量中最后一个单词的长度例如s="Goodmorning,champ!You'regoingtorockthisday"分析思路:   遇到字符串问题,经常和列表结合使用来解决,   可以先用列表的.split()分割方法进行单词分割,   再用取列表以后一个元素s[-1],最后用len()方法输出长度......
  • 【掌握推荐预测的王】基于Python Surprise库的实践指南
    构建个性化旅游路线推荐系统:基于PythonSurprise库的实践指南摘要随着大数据和人工智能技术的发展,个性化推荐系统在各行各业得到广泛应用。本文将介绍如何利用Python的Surprise库构建一个个性化的旅游路线推荐系统。通过协同过滤等算法,系统能够根据用户的历史行为和偏好,推......
  • Python调用ChatTTS API接口
    Python调用ChatTTSAPI接口:#*********************************************#author:wgscd#date:2024-7-27#installlist:#pipinstallfastapi#pipinstallrequests#pipinstalluvicorn[standard]#在命令行中运行以下命令来启动服务器:#uvicornmain:app--reload......
  • Python 中的正反斜杠用法详解
    在Python编程中,字符串是一个常用的数据类型,字符串中的斜杠(反斜杠\和正斜杠/)具有特殊的用法和意义,本文将介绍这两种斜杠的用法。一、反斜杠的转义作用在Python中,反斜杠(\)被称为转义字符,它常用于两个主要目的。1.引入特殊字符反斜杠可以用来引入特殊字符序列,这些序列在Py......
  • Python数据预处理+正态性检验+异常值处理+Q-Q图-K-S检验+相关性分析(2024MathorCup A题
    #数据预处理#正态性检验、Q-Q图、箱线图、直方图、相关性分析#Q-Q图importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromscipy.statsimportnormfromscipy.statsimportprobplota=pd.read_excel('附件1:小区基本信息.xlsx',engine='openpyxl'......
  • 文件编码检测-Python解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x
    #检测数据编码格式importchardetwithopen('附件1.csv','rb')asf:result=chardet.detect(f.read())#读取一定量的数据进行编码检测print(result['encoding'])#打印检测到的编码在读取文件时会遇到各种问题,UnicodeDecodeError:'utf-8'codeccan'tde......
  • 一个月收益高达16.5K,来看我是如何通过Python技术手段变现,逐步迈向财富自由的!
    写在开篇随着大数据和人工智能的兴起。各行业对爬虫类和数分类服务的需求量呈指数级的暴增。传统行业受经济下行的影响,近段时间失业找不到工作的朋友,后台咨询技术变现、兼职接单问题也越来越多。​当然也有网友向我发来喜报,告诉我他上半年通过爬虫单月接单1.65w,给兼职副......