gpt4 book ai didi

python - 如何使用消息包解码 flask 响应?

转载 作者:行者123 更新时间:2023-12-01 09:10:27 27 4
gpt4 key购买 nike

我使用消息包对 flask 响应进行编码,然后再将其发送到 UI。为了做到这一点,我重写了 flask 响应类

from flask import Flask, Response, jsonify, make_response
import msgpack
import json
class FlaskResponse(Response):
@classmethod
def force_type(cls, rv, environ=None):
if isinstance(rv, dict):
rv = jsonify(rv)
msgData = super(FlaskResponse, cls).force_type(rv, environ)
print "msgData"
print msgpack.packb(json.loads(msgData.data))
return jsonify((msgpack.packb(json.loads(msgData.data))))

我收到错误

UnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 0: invalid start byte

有什么建议我在这里做错了什么吗?

最佳答案

我认为问题是您正在尝试将打包字节发送到 jsonify 函数,但 Flask 无法使用它的结构。我建议在创建实例后将数据设置为 FlaskRequest

from flask import Flask, Response, jsonify
import msgpack


class CustomResponse(Response):

@classmethod
def force_type(cls, response, environ=None):
# create response instance with empty data
flask_response = jsonify() # type: CustomResponse
if isinstance(response, dict):
# set some data to respose
flask_response.data = msgpack.packb(response)
# set content_type etc...
# flask_response.content_type = 'application/octet-stream'

print(flask_response.data)
# we return response object so we don't need super()
return flask_response


app = Flask(__name__)
app.response_class = CustomResponse


@app.route('/home')
def home():
return {
'example_dict': {
'container_name': 'test',
'id': 100,
},
}

希望这有帮助。

关于python - 如何使用消息包解码 flask 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702154/

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