code: def get(self, *args, **kwargs):
  
          
  
          try:
              req_func = self.session.get if self.session else requests.get
              req = req_func(*args, **kwargs)
              req.raise_for_status()
              self.failed_last = False
              return req
  
          except requests.exceptions.RequestException as e:
              self.log_error(e)
              for i in range(1, self.num_retries):
                  sleep_time = self.retry_rate * i
                  self.log_function("Retrying in %s seconds" % sleep_time)
                  self._sleep(sleep_time)
                  try:
                      req = requests.get(*args, **kwargs)
                      req.raise_for_status()
                      self.log_function("New request successful")
                      return req
                  except requests.exceptions.RequestException:
                      self.log_function("New request failed")
  
              # Allows for the api to ignore one potentially bad request
              if not self.failed_last:
                  self.failed_last = True
                  raise ApiError(e)
              else:
                  raise FatalApiError(e)
docs: An interface for get requests that handles errors more gracefully to
          prevent data loss