问题标签 [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 投票
0 回答
215 浏览

python - 重试时的Python Tenacity日志异常

我正在使用该tenacity包重试一个功能。我的重试装饰器如下所示:

在异常情况下,我会收到这样的日志消息:

除了已经记录的内容之外,我还想记录实际的异常(1 行格式,最好不是堆栈跟踪)。有毅力能做到吗?还是我只需要捕获异常、打印并重新引发?

0 投票
1 回答
101 浏览

python - 在具有韧性的python中使用try-except sentenec不会按预期重试

您好我正在尝试使用坚韧来发送电子邮件,脚本如下:

问题是,如果我运行email_tables(vars)输出只运行一次该方法,然后退出脚本。

如果我删除 try-except 语句并且不打印异常,则脚本按预期运行 7 次,然后引发错误。

我不知道我在这里做错了什么才能重试工作。稍后我想在引发异常时将日志保存在文件中,理想情况下它失败了多少次。

提前致谢

0 投票
2 回答
747 浏览

python - Python 坚韧:如果所有重试都失败,我如何重试函数而不引发异常?

假设我有以下功能:

该函数将重试 3 次,如果所有 3 次重试都失败,则会引发异常。

如何在不引发异常的情况下使用坚韧进行 3 次重试?就像是:

0 投票
0 回答
1025 浏览

python-requests - 使用 httpx 异步客户端和坚韧的最佳方式?

通过两种不同的实现,我得到了相当不同的结果。

这是实现1

这是实现2:

我正在针对稳定的 REST API 对其进行测试。以下是基准:

  1. 100 个成功的 POST 请求:
  • 实施 1:0:59 分钟
  • 实施 2:0:57 分钟
  1. 100 个失败的 POST 请求:
  • 实施 1:3:26 分钟
  • 实施 2:2:09 分钟

这些结果是一致的。谁能帮我理解为什么我的第一个实现比我的第二个慢?

编辑:仅供参考,这就是我调用上述函数的方式(上述函数实际上接收带有 url 和正文的请求元组,为清楚起见对其进行了编辑)

0 投票
1 回答
30 浏览

python - 坚韧输出重试的消息?

编码

输出

如何记录它正在重试?如

0 投票
0 回答
46 浏览

python - Tenacy retry_error_callback:如何重新提出异常?

添加retry_error_callback以下代码后。异常被吞没。如何重新引发异常?只需添加不起作用raisecb()

0 投票
0 回答
29 浏览

python - 更新python中重试的参数

以上是最小的可复制示例。在这里,我想在每次重试中更新方法参数,即当输入作为传递5并抛出异常时,对于下一次迭代,它应该被更改为6并再次更改为 1,以便下一次没有发生的后续重试。

有没有办法实现这一点,我也不能把它放在旧的重试方式中(有运行时间计数器并在用尽所需的重试限制时退出)

0 投票
0 回答
7 浏览

python - 对异常代码的坚韧提高重试。503

我对重试很陌生,我已经坚持了一段时间,所以我想问一下。

我正在尝试连接到领事,有时当应用程序长时间运行时它会得到 503,我想结合一些逻辑来重试建立新连接。

如何仅过滤重新尝试(408, 500, 503, 504)

0 投票
0 回答
12 浏览

python - 带有 msqyl 池的 python 多线程会话

问题是:当我检查数据库中的 id(执行 sql2)时,很少有 sql2 可以正常运行并获得“stuff_id 存在”。但是,经过一些查询,即使数据库中的 stuff_id 已经存在,sql2 也无法正常运行,然后“check_stuff()”再次抓取数据。所以,你可以想象函数 'insert_sql()' 将被引发并导致异常......虽然我可以将 'Insert into' 更改为 'Replace into' 以完成数据插入过程,但我想毫无例外地获取代码并且在重复抓取过程上花费更少的时间。谢谢。