From e75d7cfd65473fd5090bb30ac3f1f79cba7b3710 Mon Sep 17 00:00:00 2001 From: Hassan Syyid Date: Wed, 14 Aug 2024 17:29:33 -0400 Subject: [PATCH] HGI-6349: Backoff on malformed XML error --- setup.cfg | 1 + src/tap_intacct/client.py | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/setup.cfg b/setup.cfg index fc6b7c8..0992ad4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,6 +35,7 @@ install_requires = singer-python>=5.0.12 requests>=2.20.0 xmltodict==0.12.0 + backoff==1.8.0 [options.package_data] schemas = tap_intacct/schemas/*.json diff --git a/src/tap_intacct/client.py b/src/tap_intacct/client.py index 4ca1ec6..e855c6f 100644 --- a/src/tap_intacct/client.py +++ b/src/tap_intacct/client.py @@ -1,6 +1,7 @@ """ API Base class with util functions """ +import backoff import datetime as dt import json import re @@ -10,6 +11,8 @@ import requests import xmltodict +from xml.parsers.expat import ExpatError + from calendar import monthrange import singer @@ -121,6 +124,10 @@ def _set_session_id(self, user_id: str, company_id: str, user_password: str): raise SageIntacctSDKError('Error: {0}'.format(response['errormessage'])) @singer.utils.ratelimit(10, 1) + @backoff.on_exception(backoff.expo, + (ExpatError), + max_tries=5, + factor=2) def _post_request(self, dict_body: dict, api_url: str) -> Dict: """ Create a HTTP post request.