Skip to content

Commit 485b984

Browse files
authored
Merge pull request #215 from malmeloo/fix/robust-retries
fix: More robust retries on empty response
2 parents b09db54 + 66e790e commit 485b984

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

findmy/reports/account.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@ async def _do_request() -> util.http.HttpResponse:
652652
# Symptom: HTTP 200 but empty response
653653
# Remove when real issue fixed
654654
retry_counter = 1
655+
_max_retries = 5
655656
while True:
656657
resp = await self._http.post(
657658
self._ENDPOINT_REPORTS_FETCH,
@@ -663,23 +664,28 @@ async def _do_request() -> util.http.HttpResponse:
663664
if resp.status_code != 200 or resp.text().strip():
664665
return resp
665666

666-
logger.warning(
667-
"Empty response received when fetching reports, retrying (%d/3)",
668-
retry_counter,
669-
)
670-
retry_counter += 1
671-
672-
if retry_counter > 3:
667+
if retry_counter > _max_retries:
673668
logger.warning(
674-
"Max retries reached, returning empty response. \
675-
Location reports might be missing!"
669+
"Max retries reached, returning empty response. "
670+
"Location reports might be missing!"
671+
)
672+
msg = (
673+
"Empty response received from Apple servers. "
674+
"This is most likely a bug on Apple's side."
675+
"More info: https://github.com/malmeloo/FindMy.py/issues/185"
676676
)
677-
msg = "Empty response received from Apple servers. \
678-
This is most likely a bug on Apple's side. \
679-
More info: https://github.com/malmeloo/FindMy.py/issues/185"
680677
raise EmptyResponseError(msg)
681678

682-
await asyncio.sleep(2)
679+
retry_time = 2 * retry_counter
680+
logger.warning(
681+
"Empty response received when fetching reports, retrying in %d seconds (%d/%d)",
682+
retry_time,
683+
retry_counter,
684+
_max_retries,
685+
)
686+
687+
await asyncio.sleep(retry_time)
688+
retry_counter += 1
683689

684690
r = await _do_request()
685691
if r.status_code == 401:

0 commit comments

Comments
 (0)