使用jsonify的pythonFlask响应

2024-04-19 21:04:22 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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

Tags: inpyselfhttpreturnresponselibdef
1条回答
网友
1楼 · 发布于 2024-04-19 21:04:22

作为错误日志,可能存在以下问题之一:

  1. 您试图在代码中打开两次url。我看不到 整个来电方,所以我不能说这是真的或提供任何进一步的解决方案确定
  2. 请求返回字节,需要解码或Json解码 失败。我建议您更改代码如下:

    result = requests.post(url, params=data['args'], json=data['payload']).textreturn result

如果需要使用json,应使用:

result = json.loads(requests.post(url, params=data['args'], json=data['payload']).text)

相关问题 更多 >