diff --git a/toargridding/toar_rest_client.py b/toargridding/toar_rest_client.py index dafb710a20656f19765a12bd2a6452a770f4898e..65a52fb32bc4542ce135a80e59b5e2d17f15f37d 100644 --- a/toargridding/toar_rest_client.py +++ b/toargridding/toar_rest_client.py @@ -257,7 +257,8 @@ class Connection: This function catches possible connection issues and continues to """ status_endpoint = self.get_status_endpoint(query_options) - + nRestart=0 + waitRestart = 300 for i, wait_time in enumerate(self.wait_seconds): logger.info(f"try: {i+1}, wait_time: {wait_time}") response = self.wait_and_get(status_endpoint, wait_secs=wait_time) @@ -269,7 +270,8 @@ class Connection: self.printExecption(e, response) #a Status Code 500 seems indicated an aborted request -> restart the request and continue with new status endpoint if e.response.status_code == 500: - logger.warning("Received internal server error. Restarting request.") + logger.warning(f"Received internal server error. Restarting request in {waitRestart}s.") + time.sleep(waitRestart) self.cache.remove(query_options.cache_key) status_endpoint = self.get_status_endpoint(query_options) else: @@ -281,7 +283,7 @@ class Connection: return response else: raise RuntimeError( - f"No data available after {sum(self.wait_seconds) / 60} minutes. retry later." + f"No data available after {sum(self.wait_seconds) / 60 + nRestart*waitRestart / 60} minutes. retry later." ) def get_status_endpoint(self, query_options: QueryOptions) -> str: