Python retrying模块实现自动重试与异常捕获详解

拾光
拾光
发布时间:2026-10-14| 6人浏览过
原创

本文介绍Python第三方库retrying的使用,通过retry装饰器实现函数失败时的自动重试。重点解析如何配置最大重试次数及自定义异常判断,并指出在已包含try-except的代码中混用可能导致重试失效的问题,提供优化建议。

retrying模块简介

retrying是Python中用于处理自动重试的第三方库,它能够对可能执行失败的代码段进行自动重试操作。该库提供了一个名为retry的装饰器函数,当被装饰的函数运行失败时,会自动重新执行。默认配置下,只要持续报错,重试过程将无限进行。

在近期开发爬虫程序连接国外网站时,经常遇到连接断开的情况。虽然自行编写了自动重连逻辑,但代码显得不够简洁。

随后在GitHub上搜索解决方案,发现了一个名为retrying的第三方库,其功能基本满足上述需求。

配置最大重试次数与代码示例

具体需求为:当出现request相关的异常时,自动重新执行,且最大连接重试次数限制为10次。参考代码如下:


 from retrying import retry 
def is_request_exception(e):
   return issubclass(type(e),RequestException)
 @retry(retry_on_exception=is_request_exception,wrap_exception=False, stop_max_attempt_number=10)
 def request_get(url, timeout=120):
   return requests.get(url, timeout=120)

使用陷阱:异常处理冲突

在使用初期曾遇到一个陷阱,即在request_get函数内部使用了try...except结构,导致重试机制未能生效。移除该结构后问题解决。

分析认为,retrying库内部已经封装了异常处理逻辑。如果用户代码中显式使用了exception处理,retrying将无法捕获到异常,从而无法触发预期的重试行为。

高级参数配置展望

retrying库支持丰富的自定义参数,例如控制等待时长、总等待时间等。目前暂无此类精细控制需求,待后续需要时再深入探究。

总结

以上介绍了Python自动重试第三方包retrying模块的使用方法,希望能帮助读者解决类似问题。如有任何疑问,欢迎留言交流,小编会及时回复。感谢大家对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。