Skip to content

Commit

Permalink
Check something
Browse files Browse the repository at this point in the history
  • Loading branch information
SmittieC committed Oct 24, 2023
1 parent 388a507 commit ea25a86
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions commcare_export/commcare_hq_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,21 +115,6 @@ def session(self, session):
def api_url(self):
return '%s/a/%s/api/v%s' % (self.url, self.project, self.version)

@backoff.on_predicate(
backoff.runtime,
predicate=lambda r: r.status_code == 429,
value=lambda r: ceil(float(r.headers.get("Retry-After", 0.0))),
jitter=None,
on_backoff=on_wait,
)
@backoff.on_exception(
backoff.expo,
requests.exceptions.RequestException,
max_time=300,
giveup=is_client_error,
on_backoff=on_backoff,
on_giveup=on_giveup
)
def get(self, resource, params=None):
"""
Gets the named resource. When the server returns a 429 (too many requests), the process will sleep for
Expand All @@ -140,14 +125,31 @@ def get(self, resource, params=None):
particular use case in the hands of a trusted user; would likely
want this to work like (or via) slumber.
"""
logger.debug("Fetching '%s' batch: %s", resource, params)
resource_url = f'{self.api_url}/{resource}/'
response = self.session.get(
resource_url, params=params, auth=self.__auth, timeout=60
@backoff.on_predicate(
backoff.runtime,
predicate=lambda r: r.status_code == 429,
value=lambda r: ceil(float(r.headers.get("Retry-After", 0.0))),
jitter=None,
on_backoff=on_wait,
)
@backoff.on_exception(
backoff.expo,
requests.exceptions.RequestException,
max_time=300,
giveup=is_client_error,
on_backoff=on_backoff,
on_giveup=on_giveup
)
if response.status_code != 429:
response.raise_for_status()
return response
def _get(resource, params=None):
logger.debug("Fetching '%s' batch: %s", resource, params)
resource_url = f'{self.api_url}/{resource}/'
response = self.session.get(
resource_url, params=params, auth=self.__auth, timeout=60
)
if response.status_code != 429:
response.raise_for_status()
response = _get(resource, params)
return response.json()

def iterate(
self,
Expand Down

0 comments on commit ea25a86

Please sign in to comment.