【问题标题】:Unpacking msgpack from respond in python在 python 中从响应中解压 msgpack
【发布时间】:2017-03-20 15:15:52
【问题描述】:

我在尝试msgpack.unpack 时收到以下错误:

ExtraData: unpack(b) received extra data.

我的部分代码:

r1=requests.get('http://localhost:3000/fs?path='+r.json()['object'])
unp = msgpack.unpackb(r1.content)

有人可以帮忙吗?

【问题讨论】:

    标签: python response msgpack


    【解决方案1】:

    文档对此不是很清楚,但msgpack.unpackb 是一个“一次性”解包器——你不能给它一个更大的流,里面有额外的数据。我假设您正在获取多个 msgpack 对象,您可以使用msgpack.Unpacker 阅读它们,如

    r1=requests.get('http://localhost:3000/fs?path='+r.json()['object'])
    for unp in msgpack.unpackb(r1.content):
        do something...
    

    这样做的原因是msgpack 反序列化器以块的形式读取数据以提高效率。对于unpackb,您只能返回一个对象,它的块读取器消耗的数据流比它应有的要多,并且您丢失了数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-05
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多