in client/securedrop_client/api_jobs/base.py [0:0]
def _do_call_api(self, api_client: API | None, session: Session) -> None:
if not api_client:
raise ApiInaccessibleError()
while self.remaining_attempts >= 1:
try:
self.remaining_attempts -= 1
result = self.call_api(api_client, session)
except (AuthError, ApiInaccessibleError) as e:
raise ApiInaccessibleError() from e
except (RequestTimeoutError, ServerConnectionError) as e:
if self.remaining_attempts == 0:
self.failure_signal.emit(e)
raise
# Timeout errors may mean the user should try changing Tor circuits
elif isinstance(e, RequestTimeoutError):
logger.info("Encountered RequestTimeoutError, retrying API call")
except Exception as e:
self.failure_signal.emit(e)
raise
else:
self.success_signal.emit(result)
break