问题标签 [python-tenacity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6061 浏览

python - Python 使用坚韧模块重试

我很难让坚韧图书馆按预期工作。以下测试中的重试根本不会触发。我希望每 5 秒重试一次,并且日志文件会反映重试尝试。

日志文件将其吐出:

0 投票
6 回答
4382 浏览

python - python坚韧重试,禁用单元测试的“等待”

我正在使用tenacity库来使用它的@retry装饰器。

我正在使用它来创建一个函数,该函数会在失败的情况下多次“重复”HTTP 请求。

这是一个简单的代码片段:

该函数使用 tenacitywait参数在调用之间等待一段时间。

该功能与@retry-decorator 一起似乎工作正常。

但是我也有一个单元测试,它检查函数在失败的情况下确实被调用了 7 次。此测试需要很多时间,因为这wait在尝试之间进行。

是否可以仅在单元测试中以某种方式禁用等待时间?

0 投票
1 回答
3176 浏览

python - Python 重试包 - 坚韧:如何记录异常的根本原因?

正如在这个问题中所讨论的,我正在使用坚韧来重试。

玩具代码如下所示

输出如下所示

有人可以让我知道如何记录异常的根本原因吗?

0 投票
2 回答
1713 浏览

python - Python在没有装饰器的情况下使用坚韧重试

我正在尝试使用坚韧(没有装饰器)重试。我的代码看起来像这里解释的那样。

在执行上述代码时。输出如下所示,无需重试

有人可以告诉我出了什么问题,因为我在上面的代码中没有看到任何重试吗?

0 投票
1 回答
947 浏览

python - 使用 Tenacity 重试时,我可以动态更改传递给函数的参数吗?

我想使用Tenacity Python 库作为它的@retry装饰器。但是,我想在每次重试时使用不同的参数调用我的函数,但不知道如何指定。

我的函数定义如下所示:

这有点简化,但想法是当我第一次调用该函数时,我将1作为第一个参数传入。重试时,我希望它将此值更改为2. 这可以用 Tenacity 的@retry装饰器完成吗?也许通过回调?

0 投票
1 回答
1672 浏览

python - python重试重试,禁用unittest

编辑:由于韧度是最近的重试,这个问题可以被认为是链接问题的重复,解决方案是升级到韧度。

此问题类似,我想在 python 中对具有重试装饰器的函数进行单元测试:

在我的单元测试中,有时我想调用这个函数而不重试,有时使用不同的参数。

我尝试在 中设置变量setUp()/tearDown(),但它不起作用。我尝试修补重试装饰器,但它也不起作用。

0 投票
3 回答
2394 浏览

python - Python坚韧:如果异常不是某种类型,如何重试?

如果异常不是使用Python的坚韧的某种类型,如何重试函数?

retry_if_exception_type如果出现某种类型的异常,将重试。not似乎在方法之前或其参数之前都不起作用。

retry_unless_exception_type,另一方面,即使没有上升错误,也会永远循环,直到出现某种类型的上升错误。

0 投票
1 回答
698 浏览

python - 坚韧模块的“重试”不适用于生成器

我在使用 python3 中的 tenacity 库中的“重试”工具时遇到问题。 当我使用生成器时,“重试”装饰器似乎不起作用。

我有一个代码示例来说明我的情况:

当它引发异常时,它不会重试。有人知道为什么这不起作用吗?

谢谢

0 投票
4 回答
825 浏览

python - 在装饰器中引用自我

我正在 python 中实现一个数据库连接器类。我将使用retrytenacity 库中的装饰器在超时时重试数据库连接。

我想将self.retry_countand传递给装饰器self.retry_interval中的参数。retry

现在调用mysql_connect函数:

但它显示:NameError: name 'self' is not defined.

有什么方法可以将self.retry_count&传递self.retry_interval给装饰者吗?

0 投票
1 回答
869 浏览

python - Python3 在使用 gspread 时重试坚韧(不带装饰器)会出现错误,声称“缺少参数”

我正在尝试使用 tenacity 模块来避免APIError来自 gspread 的频繁请求错误(s)。我了解坚韧使用装饰器的常见示例,但我想使用坚韧的Retrying()功能,所以我可以让它重试 gspread 的电子表格单元格更新方法sheet.update_acell()

出于某种原因,使用重试sheet.update_acell()实际上并没有“给”函数(或其他东西)的参数。然而,一个人为的多参数示例完美地工作。

我的代码(进口和谷歌 API 凭证除外):

输出:

运行 gspread 的东西没有韧性,所以我确信我的调用是update_acell()正确的。

我觉得这可能与 gspreadupdate_acell()是一种方法这一事实有关,不像example_func()?任何帮助,将不胜感激。