使用flask API构建的两个应用程序尝试接收带有巨大JSON响应的响应失败,错误为10054,“远程主机强制关闭了现有连接”
我可以缩小这个问题,当反应很大时,它会失败
@api.route('/endpoint', methods=['POST'])
def endpoint():
result = {small / huge dict}
return jsonify({'result': result}), 200
主叫方:
^{pr2}$错误日志:
File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 1331, in getresponse
response.begin()
File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 321, in begin
self.headers = self.msg = parse_headers(self.fp)
File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 206, in parse_headers
line = fp.readline(_MAXLINE + 1)
File "C:\Program Files (x86)\Python36-32\lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
更新:
试图以计划文本的形式给出回应,而失败的地方少得多,但问题还是偶尔出现。在
def response(output):
return Response(response_generator(output), mimetype='text/plain')
def response_generator(result):
result_str = json.dumps(result)
for row in [result_str[i:i + 1024*1024] for i in range(0, len(result_str), 1024*1024)]:
yield row
作为错误日志,可能存在以下问题之一:
请求返回字节,需要解码或Json解码 失败。我建议您更改代码如下:
result = requests.post(url, params=data['args'], json=data['payload']).text
return result
如果需要使用json,应使用:
相关问题 更多 >
编程相关推荐