gpt4 book ai didi

使用 jsonify 的 python flask 响应

转载 作者:行者123 更新时间:2023-11-28 19:28:52 27 4
gpt4 key购买 nike

两个使用 flask API 构建的应用程序,试图接收具有巨大 JSON 响应的响应失败,错误 10054,“现有连接被远程主机强行关闭”

我可以缩小响应很大时失败的问题

@api.route('/endpoint', methods=['POST'])
def endpoint():

result = {small / huge dict}

return jsonify({'result': result}), 200

调用方:

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

错误日志:

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

最佳答案

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

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

    result = requests.post(url, params=data['args'], json=data['payload']).text返回结果

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

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

关于使用 jsonify 的 python flask 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49187943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com