【发布时间】:2023-01-15 03:36:00
【问题描述】:
我有一些代码使用 requests 从 API 获取响应并将结果上传到数据库中。我已经构建了一个自定义的 Request 类,因此我可以调整 BACKOFF_MAX 变量。通过 MRE:
from requests import Session
from requests.adapters import HTTPAdapter, Retry
from time import sleep
class RetryRequest(Retry):
def __init__(self, backoff_max: int, **kwargs):
super().__init__(**kwargs)
self.BACKOFF_MAX = backoff_max
session = Session()
retries_spec = RetryRequest(
total=25,
backoff_factor=0.25,
backoff_max=128,
)
session.mount("https://", HTTPAdapter(max_retries=retries_spec))
headers = {"User-Agent": "*", "Referer": None}
session.headers.update(headers)
while True:
response = session.get(<url>)
# load response into database
sleep(60)
这适用于循环的数百次迭代,但每隔一段时间我就会收到此错误:
http.client.RemoteDisconnected: Remote end closed connection without response
有人可以告诉我这是否是重试耗尽的结果,或者我是否需要在这里进行一些额外的错误处理?
【问题讨论】: