Raise last retry exception from JSON-RPC request

Closes #15008
(grafted from 3e2a195d2b333fda531f719c4b6c69a7c5f2e1c0)

--HG--
branch : 8.0
This commit is contained in:
Cédric Krier
2026-08-15 08:03:57 +02:00
parent 605b1d214e
commit 87e7fc92f6
+9 -4
View File
@@ -294,7 +294,8 @@ class ServerProxy(xmlrpc.client.ServerProxy):
try:
try:
for i in range(5):
count, retry = 0, 5
while True:
try:
response = self.__transport.request(
self.__host,
@@ -304,17 +305,21 @@ class ServerProxy(xmlrpc.client.ServerProxy):
)
break
except xmlrpc.client.ProtocolError as e:
if e.errcode == HTTPStatus.SERVICE_UNAVAILABLE:
if (e.errcode == HTTPStatus.SERVICE_UNAVAILABLE
and count < retry):
count += 1
try:
delay = int(e.headers.get('Retry-After', i))
delay = int(
e.headers.get('Retry-After', count))
except ValueError:
if isinstance(
e.errcode, HTTPStatus.GATEWAY_TIMEOUT):
# Do not retry on timeout without delay
raise
delay = i
delay = count
delay = min(delay, 10)
time.sleep(delay)
continue
else:
raise
except (socket.error, http.client.HTTPException) as v: