in python-phoenixdb/phoenixdb/avatica/client.py [0:0]
def _post_request(self, body):
# Create the session if we haven't before
if not self.session:
logger.debug("Creating a new Session")
self.session = requests.Session()
self.session.headers.update(self.headers)
self.session.stream = True
if self.auth is not None:
self.session.auth = self.auth
retry_count = self.max_retries
while True:
logger.debug("POST %s %r %r", self.url.geturl(), body, self.session.headers)
requestArgs = {'data': body}
# Setting verify on the Session is not the same as setting it
# as a request arg
if self.verify is not None:
requestArgs.update(verify=self.verify)
try:
response = self.session.post(self.url.geturl(), **requestArgs)
except requests.HTTPError as e:
if retry_count > 0:
delay = math.exp(-retry_count)
logger.debug("HTTP protocol error, will retry in %s seconds...", delay, exc_info=True)
time.sleep(delay)
retry_count -= 1
continue
raise errors.InterfaceError('RPC request failed', cause=e)
else:
if response.status_code == requests.codes.service_unavailable:
if retry_count > 0:
delay = math.exp(-retry_count)
logger.debug("Service unavailable, will retry in %s seconds...", delay, exc_info=True)
time.sleep(delay)
retry_count -= 1
continue
return response