def fetch_http(sanic_http_request: HTTPRequest,
jsonrpc_request: SingleJsonRpcRequest,
url: str,
batch_index: int) -> SingleJsonRpcResponse:
session = sanic_http_request.app.config.aiohttp['session']
args = sanic_http_request.app.config.args
headers = {}
headers['x-amzn-trace_id'] = sanic_http_request.headers.get('x-amzn-trace-id')
headers['x-jussi-request-id'] = sanic_http_request.headers.get('x-jussi-request-id')
upstream_request = {k: jsonrpc_request[k] for k in
{'jsonrpc', 'method', 'params'} if k in jsonrpc_request}
upstream_request['id'] = sanic_http_request['request_id_int'] + batch_index
with async_timeout.timeout(args.upstream_http_timeout):
async with session.post(url, json=upstream_request, headers=headers) as resp:
upstream_response = await resp.json()
del upstream_response['id']
if 'id' in jsonrpc_request:
upstream_response['id'] = jsonrpc_request['id']
return upstream_response
# pylint: enable=no-value-for-parameter
评论列表
文章目录