@@ -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