I have the following Session object :
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)
and once in a while the server seems to break the connection with an RST TCP-packet resulting in the following Error:
{"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)"
- Is it possible to inject a
Retry
object in aSession
object so that this particularConnectionError
is automatically retried? - Is there any other way to retry automatically without any additional custom logic such as wrapping it in a
try... except
statement or creating a customHTTPAdapter
? - I have seen multiple posts regarding
104 connection reset by peer errors
, but no one asking how to retry it automatically. Why is that? I assume I won't be the only one with this problem?