问题标签 [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 回答
718 浏览

python - Python 使用动态参数重试

重试坚韧的python库中尝试过这个,但无济于事。

重试通常与装饰器一起使用,例如如下元代码所示:

我希望重试参数可以在类上配置

显然这会中断,因为装饰器无法访问对象属性(即无法访问self)。所以认为这会起作用:

但是这两个库都不允许在with块中调用重试

用动态参数包装重试逻辑的首选方法是什么?

0 投票
1 回答
301 浏览

python-3.x - 使用坚韧装饰器时,python3 try/except 似乎失败

尝试使用请求函数来实现重试/退避,然后在所有重试失败时返回 HTTP 状态。似乎我可以让重试工作或使用 try/except,但不能同时使用两者。包装在另一个函数中没有帮助。

OSX mojave 上的 Python 3.7.7 请求 2.24.0 坚韧 6.2.0

带有装饰器且没有 try/except 的函数 1 调用坚韧规则,但我没有收到 http 错误作为返回:

带有 try/except 的函数 2 得到正确的错误,但未能调用坚韧

编辑:修复是在异常之后 r.raise_for_status() - 这会重新引发并抓住韧性

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 回答
421 浏览

python - 使用异常处理程序重试坚韧

可以tenacity处理这个问题,或者如果我需要捕获异常进行回调并返回下一次尝试,我应该自己实现重试包装器吗?

发送→获取错误→如果可恢复→运行回调→再次尝试发送

当我对这段代码使用一个简单的案例时,下一次尝试从未发生过:

0 投票
1 回答
39 浏览

python - 设置套接字超时是否会取消初始请求

我有一个只能运行一次的请求。有时,请求花费的时间比应有的要长得多。

如果我要设置一个默认的套接字超时值(使用socket.setdefaulttimeout(5)),并且它花费了超过 5 秒,那么原始请求是否会被取消,以便可以安全地重试(参见下面的示例代码)?

如果不是,那么取消原始请求并再次重试以确保它不会运行超过一次的最佳方法是什么。

0 投票
1 回答
30 浏览

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

编码

输出

如何记录它正在重试?如

0 投票
0 回答
46 浏览

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

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

0 投票
0 回答
7 浏览

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

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

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

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