def send_request(method, path, body=None, transaction=True, impersonate_as=None, retry_num=10):
oa_uri = request.headers.get('aps-controller-uri')
url = urljoin(oa_uri, path)
headers = {'Content-Type': 'application/json'}
if impersonate_as:
headers['aps-resource-id'] = impersonate_as
if transaction and request.headers.get('aps-transaction-id'):
headers['aps-transaction-id'] = request.headers.get('aps-transaction-id')
data = None if body is None else json.dumps(body)
retry_num = retry_num if retry_num > 0 else 1
with Session() as s:
prepared = Request(
method=method,
url=url,
data=data,
headers=headers,
auth=g.auth
).prepare()
while retry_num > 0:
retry_num -= 1
try:
g.log['out'].append(dict(request=None, response=None))
g.log['out'][-1]['request'] = log_outgoing_request(prepared)
resp = s.send(prepared, timeout=OA.request_timeout, verify=False)
g.log['out'][-1]['response'] = log_outgoing_response(resp)
except requests.exceptions.Timeout:
err = ErrorResponse(None, 'Request to OA timed out. '
'Timeout: {}'.format(OA.request_timeout))
raise OACommunicationException(err)
except Exception as e:
err = ErrorResponse(None, str(e))
raise OACommunicationException(err)
if resp.status_code == 200:
return resp.json()
elif resp.status_code != 400:
raise OACommunicationException(resp)
raise OACommunicationException(resp)
评论列表
文章目录