__init__.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:fallball-connector 作者: ingrammicro 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号