gpt4 book ai didi

python-3.x - 如何在不尝试的情况下重试由python请求库中的对等连接错误重置的104个连接,除了

转载 作者:行者123 更新时间:2023-12-04 17:17:08 26 4
gpt4 key购买 nike

我有以下 Session 对象:

    import requests
from requests.adapters import Retry, HTTPAdapter
from requests.sessions import Session

retry_strategy: Retry = Retry(
total=5,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["HEAD", "GET", "OPTIONS", "POST"],
backoff_factor=1
)
http_adapter = HTTPAdapter(max_retries=retry_strategy)
session = requests.Session()
session.mount("https://", http_adapter)
有时服务器似乎会中断与 RST TCP 数据包的连接,导致以下错误:
{"isError": true,
"type": "ConnectionError",
"message": "[Errno 104] Connection reset by peer",
"traceback": "... omitted for brevity ...
File "/var/task/requests/sessions.py", line 590, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/var/task/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/var/task/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/var/task/requests/adapters.py", line 498, in send
raise ConnectionError(err, request=request)"

  • 是否可以注入(inject) Retry Session 中的对象对象,以便此特定 ConnectionError是否自动重试?
  • 有没有其他方法可以自动重试而无需任何额外的自定义逻辑,例如将其包装在 try... except 中声明或创建自定义 HTTPAdapter ?
  • 我看过多篇关于 104 connection reset by peer errors 的帖子,但没有人问如何自动重试。这是为什么?我想我不会是唯一遇到这个问题的人吗?
  • 最佳答案

    给看看https://github.com/jd/tenacity
    我通常做这样的事情

    from tenacity import wait_exponential

    @retry(wait=wait_exponential(multiplier=1, min=4, max=10))
    def wait_exponential_1():
    # my request here

    您可以创建一个函数,该函数产生一个用坚韧包装的 session 。

    关于python-3.x - 如何在不尝试的情况下重试由python请求库中的对等连接错误重置的104个连接,除了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68447597/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com