PYTHON帮助

Tenacity Python(开发者如何使用)

发布 2024年七月1日
分享:

在使用 Python 编程语言开发强大而有弹性的程序时,经常需要优雅地处理临时错误,尤其是在使用外部服务或网络操作时。这时,强大的 Python 通用重试库 Tenacity 就派上用场了。开发人员可以通过将 Tenacity 与 IronPDF(一个用于在 Python 应用程序中创建 PDF 文档的功能丰富的框架)相结合,提高 PDF 生成操作的可靠性和健壮性。

由于网络故障、超时或服务中断等瞬时问题,重试任务可能不成功或出现异常,Tenacity 为重试任务提供了可调整和可定制的结构。Tenacity 利用其用户友好的应用程序接口和广泛的功能集简化了重试逻辑的开发,使开发人员能够专注于创建可靠的系统,而不必担心稍纵即逝的故障。

在本篇文章中,我们将介绍将 Tenacity 库与 IronPDF 集成的优势、实际示例,并就如何在 Python 应用程序中创建可靠的 PDF 生成流程提供建议。通过将 Tenacity 与 IronPDF 的强大功能相结合,开发人员可以提高应用程序的健壮性和可靠性,同时为用户提供高质量的 PDF 文档。

基于装饰器的重试

Tenacity 使程序员能够使用 Python 装饰器为函数或方法添加重试逻辑。因此,在不改变原始代码的情况下为特定操作添加重试行为非常简单。

量身定制的重试计划

Tenacity 提供多个可调参数来指定重试计划。重试的最大次数、重试之间的间隔时间以及重试应在什么情况下进行都是开发人员可以自定义的。

指数后退

Tenacity 支持指数式回退,这是当前流行的重试调用技术,重试的间隔时间随每次尝试的次数呈指数增长。通过这种方法,可以避免目标服务在有大量流量或拥塞时被请求淹没。

抖动和随机性

Tenacity 为重试延迟提供了引入抖动和随机性的选项,以防止同步问题和雷群问题。这样可以通过分散重试时间来降低多个客户端同时重试的可能性。

重试条件和例外情况

根据操作的返回值或任何引发的异常,开发人员可以创建独特的重试条件。这样就可以精确地规定何时以及在何种条件下进行重试。

超时和截止日期

Tenacity 可帮助创建一般操作的超时和截止时间,确保不会无限制地尝试重试,并在操作时间超过预定阈值时最终终止操作。

与流行的 Python 框架集成

Flask、Django 和 Celery 只是 Tenacity 可轻松与之交互的几个框架。这使得开发人员可以轻松地将重试逻辑添加到后台操作、网络端点或系统的任何其他部分。

创建和配置 Tenacity

指数后退

from tenacity import wait_exponential

# Exponential backoff sleeping
@retry(wait=wait_exponential(multiplier=1, min=1, max=10))
def my_function():
    ...
PYTHON
  • 乘数":要延长重试间隔,请使用指数乘数。
  • min:两次重试之间的最短间隔时间。

  • max:尝试次数之间的最长间隔。

随机抖动

from tenacity import wait_random

@retry(wait=wait_random(min=1, max=10))
def my_function():
    ...
PYTHON
  • 最小值:试验间隔数的最小任意限制。
  • max:按尝试次数之间的间隔数计算的最大任意限制。

自定义重试条件

例外情况 自定义重试

from tenacity import retry_if_exception_type

# Coroutines retry code block, exceptions customize retrying
@retry(retry=retry_if_exception_type(ConnectionError))
def my_function():
    ...
PYTHON

只有在出现的异常类型为 (在这种情况下,"ConnectionError) 则会出现错误信息。

根据返回值重试

from tenacity import retry_if_result

# Retry forever ignoring exceptions code block
@retry(retry=retry_if_result(lambda result: result is None))
def my_function():
    ...
PYTHON

只有在方法返回 "无 "的情况下才会重试。

停止条件

from tenacity import stop_after_delay

@retry(stop=stop_after_delay(30))
def my_function():
    ...
PYTHON

预定时间后 (例如,30 秒)不要再尝试了。

重试回调

from tenacity import after_log

# Custom callbacks
@retry(after=after_log(logger, logging.DEBUG))
def my_function():
    ...
PYTHON

应使用指定的日志记录器记录附加在函数上的重试属性及其尝试。 (像 "日志 "一样) 并提高特定的日志级别 (如 DEBUG).

入门

什么是 IronPDF?

借助流行的工具包 IronPDF,我们可以在程序中创建、编辑和渲染 PDF 文档。使用 PDF 的方式多种多样:可以将 HTML 页面转换为 PDF,在已有的 PDF 中添加文本、图像和形状,以及从已有的 PDF 中提取文本和图像。甚至还可以从 HTML 内容、图像或原始数据中创建新的 PDF 页面。

IronPDF 非常易于使用,这是它的主要优势之一。Python 的用户友好 API 和丰富的文档使开发人员可以轻松地在其项目中开始创建 PDF。IronPDF 还有两个特点:速度和效率,这让开发人员可以快速创建高质量的 PDF 文档。

IronPDF 的一些优势:

  • 将图像、原始数据和 HTML 转换为 PDF。
  • 删除 PDF 文件中的图像和文本
  • 为 PDF 文件添加页眉、页脚和水印。
  • 用密码和加密保护 PDF 文件。

  • 电子签名和填写表格的功能。

安装图书馆

在 Python 应用程序中同时使用 Tenacity 和 IronPDF 的第一步是安装所需的依赖库,并将这两个库集成到 PDF 生成工作流程中。

pip install tenacity
pip install ironpdf

在 Python 脚本中,从 Tenacity 和 IronPDF 中导入所需的模块:

from tenacity import retry, stop_after_attempt, wait_fixed
from IronPdf import IronPdf
PYTHON

使用 Tenacity @retry 装饰器装饰您的 PDF 生成方法,并设置重试行为,如永远重试:

@retry(
    stop=stop_after_attempt(3),   # Stop retrying after 3 attempts
    wait=wait_fixed(2)            # Wait 2 seconds between retry attempts
)
def generate_pdf(html_content):
    iron_pdf = IronPdf()
    iron_pdf.render_html_as_pdf(html_content)
    iron_pdf.save_as_pdf("output.pdf")
PYTHON

@retry(stop=stop_after_attempt(3)):表示尝试三次后,函数应停止重试调用。等待固定(2)`:表示每次重试呼叫尝试之间应有 2 秒钟的停顿。

调用创建 PDF 的函数并将 HTML 文本传递给它。如果出现异常,Tenacity 将根据预设的重试参数自动重试该函数。

try:
    html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
    generate_pdf(html_content)
    print("PDF generated successfully")
except Exception as e:
    print("Failed to generate PDF:", e)
PYTHON

通过修改重试次数、重试条件和等待条件、重试间隔以及重试发生的环境等因素,您可以进一步改变重试行为。Tenacity 包括不同的重试方法以及重试和等待条件策略,你可以根据自己的需求对重试行为进行微调。

输出示例

以下是上述代码生成的输出结果:

Tenacity Python(如何为开发人员工作):图 1 - 预期返回结果重试 PDF 输出

结论

总之,Tenacity 和 IronPDF 为在 Python 应用程序中创建稳健可靠的 PDF 生成工作流提供了强有力的解决方案。开发人员可以利用 IronPDF 强大的 PDF 生成功能和 Tenacity 可定制的重试逻辑,确保他们的 PDF 生成流程稳健可靠,能够抵御临时故障和重试。

利用 Tenacity 的广泛功能集,开发人员可针对多种条件精确调整重试策略,指定独特的重试标准,自定义异常重试,并包含复杂的配置选项。Tenacity 允许开发人员从容应对瞬间故障,如网络中断或服务中断,并确保重要的 PDF 创建流程立即重试。

总之,开发人员可以通过利用 Tenacity 和 IronPDF 创建可靠、稳健的 PDF 生产解决方案,以应对现实世界中的各种严酷环境。这种组合为在 Python 应用程序中创建可靠、可扩展的 PDF 生成工作流奠定了坚实的基础,无论该工作流是用于制作发票、报告还是文档。

软件包中包含 IronPDF 的终身许可证,收费合理。对于许多系统,该软件包的价格为 749 美元,非常实惠。许可证持有者可获得 24 小时在线工程支持。请访问许可证页面,了解更多收费详情。要了解有关 Iron Software 产品的更多信息,请访问资料库页面。

< 前一页
Opentelemetry Python(开发人员如何使用)
下一步 >
Beautiful Soup Python(开发人员如何使用)

准备开始了吗? 版本: 2024.9 刚刚发布

免费 pip 安装 查看许可证 >