Skip to content

Commit aa1c81e

Browse files
authored
Merge pull request #4 from OMOPHub/retry-on-error
Add retry logic for server errors
2 parents 3d3f3a2 + b2a98db commit aa1c81e

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

src/omophub/_http.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ def request(
137137
params=filtered_params if filtered_params else None,
138138
json=json,
139139
)
140+
# Retry on server errors (502, 503, 504)
141+
if (
142+
response.status_code in (502, 503, 504)
143+
and attempt < self._max_retries
144+
):
145+
time.sleep(2**attempt * 0.5)
146+
continue
140147
return response.content, response.status_code, response.headers
141148

142149
except httpx.ConnectError as e:
@@ -222,6 +229,13 @@ async def request(
222229
params=filtered_params if filtered_params else None,
223230
json=json,
224231
)
232+
# Retry on server errors (502, 503, 504)
233+
if (
234+
response.status_code in (502, 503, 504)
235+
and attempt < self._max_retries
236+
):
237+
await asyncio.sleep(2**attempt * 0.5)
238+
continue
225239
return response.content, response.status_code, response.headers
226240

227241
except httpx.ConnectError as e:

0 commit comments

Comments
 (0)