问题标签 [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.
python - Python 使用坚韧模块重试
我很难让坚韧图书馆按预期工作。以下测试中的重试根本不会触发。我希望每 5 秒重试一次,并且日志文件会反映重试尝试。
日志文件将其吐出:
python - python坚韧重试,禁用单元测试的“等待”
我正在使用tenacity库来使用它的@retry
装饰器。
我正在使用它来创建一个函数,该函数会在失败的情况下多次“重复”HTTP 请求。
这是一个简单的代码片段:
该函数使用 tenacitywait
参数在调用之间等待一段时间。
该功能与@retry
-decorator 一起似乎工作正常。
但是我也有一个单元测试,它检查函数在失败的情况下确实被调用了 7 次。此测试需要很多时间,因为这wait
在尝试之间进行。
是否可以仅在单元测试中以某种方式禁用等待时间?
python - 使用 Tenacity 重试时,我可以动态更改传递给函数的参数吗?
我想使用Tenacity Python 库作为它的@retry
装饰器。但是,我想在每次重试时使用不同的参数调用我的函数,但不知道如何指定。
我的函数定义如下所示:
这有点简化,但想法是当我第一次调用该函数时,我将1
作为第一个参数传入。重试时,我希望它将此值更改为2
. 这可以用 Tenacity 的@retry
装饰器完成吗?也许通过回调?
python - python重试重试,禁用unittest
编辑:由于韧度是最近的重试,这个问题可以被认为是链接问题的重复,解决方案是升级到韧度。
与此问题类似,我想在 python 中对具有重试装饰器的函数进行单元测试:
在我的单元测试中,有时我想调用这个函数而不重试,有时使用不同的参数。
我尝试在 中设置变量setUp()/tearDown()
,但它不起作用。我尝试修补重试装饰器,但它也不起作用。
python - Python坚韧:如果异常不是某种类型,如何重试?
如果异常不是使用Python的坚韧的某种类型,如何重试函数?
retry_if_exception_type
如果出现某种类型的异常,将重试。not
似乎在方法之前或其参数之前都不起作用。
retry_unless_exception_type
,另一方面,即使没有上升错误,也会永远循环,直到出现某种类型的上升错误。
python - 坚韧模块的“重试”不适用于生成器
我在使用 python3 中的 tenacity 库中的“重试”工具时遇到问题。 当我使用生成器时,“重试”装饰器似乎不起作用。
我有一个代码示例来说明我的情况:
当它引发异常时,它不会重试。有人知道为什么这不起作用吗?
谢谢
python - 在装饰器中引用自我
我正在 python 中实现一个数据库连接器类。我将使用retry
tenacity 库中的装饰器在超时时重试数据库连接。
我想将self.retry_count
and传递给装饰器self.retry_interval
中的参数。retry
现在调用mysql_connect
函数:
但它显示:NameError: name 'self' is not defined
.
有什么方法可以将self.retry_count
&传递self.retry_interval
给装饰者吗?
python - Python3 在使用 gspread 时重试坚韧(不带装饰器)会出现错误,声称“缺少参数”
我正在尝试使用 tenacity 模块来避免APIError
来自 gspread 的频繁请求错误(s)。我了解坚韧使用装饰器的常见示例,但我想使用坚韧的Retrying()
功能,所以我可以让它重试 gspread 的电子表格单元格更新方法sheet.update_acell()
。
出于某种原因,使用重试sheet.update_acell()
实际上并没有“给”函数(或其他东西)的参数。然而,一个人为的多参数示例完美地工作。
我的代码(进口和谷歌 API 凭证除外):
输出:
运行 gspread 的东西没有韧性,所以我确信我的调用是update_acell()
正确的。
我觉得这可能与 gspreadupdate_acell()
是一种方法这一事实有关,不像example_func()
?任何帮助,将不胜感激。