From 159fe2d38ec79b0e210b6b59c3e65b40fdb7c567 Mon Sep 17 00:00:00 2001 From: PascalCrow Date: Mon, 13 Apr 2026 16:25:21 +0200 Subject: [PATCH 1/3] Adding retry logic in case of connection errors to object get requests --- ewah/hooks/hubspot.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/ewah/hooks/hubspot.py b/ewah/hooks/hubspot.py index 355d610..b800193 100644 --- a/ewah/hooks/hubspot.py +++ b/ewah/hooks/hubspot.py @@ -172,7 +172,7 @@ def retry_request( headers: Optional[dict] = None, expected_status_code: int = 200, retries: int = 3, - wait_for_seconds: int = 60, + wait_for_seconds: int = 30, ): # Every once in a while, the HubSpot API returns a 502 Bad Gateway # error. This appears to be random and related to HubSpot's server @@ -181,15 +181,26 @@ def retry_request( try_number = 0 while try_number < retries: try_number += 1 - request = requests.get(url, params=params, headers=headers) - if request.status_code == expected_status_code: - break - self.log.info( - "Status {0} - Waiting {2}s and trying again. Response:\n\n{1}".format( - request.status_code, request.text, wait_for_seconds + try: + request = requests.get(url, params=params, headers=headers) + if request.status_code == expected_status_code: + break + self.log.info( + "Status {0} - Waiting {2}s and trying again. Response:\n\n{1}".format( + request.status_code, request.text, wait_for_seconds + ) ) - ) - sleep(60) + # Connection errors are retried in the while loop + except requests.exceptions.ConnectionError as e: + self.log.info( + "Connection error on attempt {0}/{1}: {2} - Waiting {3}s and trying again.".format( + try_number, retries, str(e), wait_for_seconds + ) + ) + if try_number >= retries: + raise + if try_number < retries: + sleep(wait_for_seconds) return request def get_data_in_batches( @@ -347,8 +358,7 @@ def get_data_in_batches( ) if try_number >= retries: raise - if try_number < retries: - sleep(wait_for_seconds) + sleep(wait_for_seconds) assert request.status_code < 300, request.text assert request.status_code >= 200, request.text associations_data[association].update( From 6e61fe90fe8cff85d65cb77bfe0e3738a0ca19a2 Mon Sep 17 00:00:00 2001 From: PascalCrow Date: Mon, 13 Apr 2026 16:25:34 +0200 Subject: [PATCH 2/3] Version bump --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 8beb261..49ab67d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9.26 \ No newline at end of file +0.9.27 \ No newline at end of file From 092009d450c06e558c2acae335a64aed8201d26f Mon Sep 17 00:00:00 2001 From: PascalCrow Date: Mon, 13 Apr 2026 16:29:26 +0200 Subject: [PATCH 3/3] Minor edit --- ewah/hooks/hubspot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ewah/hooks/hubspot.py b/ewah/hooks/hubspot.py index b800193..f2b9951 100644 --- a/ewah/hooks/hubspot.py +++ b/ewah/hooks/hubspot.py @@ -358,7 +358,8 @@ def get_data_in_batches( ) if try_number >= retries: raise - sleep(wait_for_seconds) + if try_number < retries: + sleep(wait_for_seconds) assert request.status_code < 300, request.text assert request.status_code >= 200, request.text associations_data[association].update(