【问题标题】:Compressing data to string for json post without saving files将数据压缩为json帖子的字符串而不保存文件
【发布时间】:2019-07-02 02:04:01
【问题描述】:

我正在编写代码 (Python 3),用于在小型 IOT 设备上收集数据并将其上传到 AWS 上的数据库。目前,数据是通过将其解析为 json 字符串并通过 post 请求发送来发送的。有时可能会有很多数据,我想知道是否可以使用发布请求以压缩形式发送。

我不想做的是获取数据,将其压缩到一个文件中,然后将该文件的原始数据读入一个字符串,然后将该字符串放入 JSON 中。保存文件并立即从中读取将是一种浪费。

有没有办法将数据直接压缩成一串原始数据,然后将压缩后的字符串发送出去,而不是压缩成文件再读取?

我需要一种无损压缩格式,希望压缩/解压缩不会占用太多资源。 .npy 压缩会特别好。

【问题讨论】:

  • gzip 可以处理您的压缩,因为它可以压缩字节字符串或文件对象。至于读写,您可以使用来自iobytesIO 对象而不是写入磁盘

标签: python post upload binary-data http-compression


【解决方案1】:

因为你提到 npy,你似乎有二进制数据。

只需在 POST 正文中发送二进制数据。

如果您需要压缩信号,那就是另一个问题了。 大多数测量不是非常可压缩的无损。

您可能需要降低浮点数的精度或在设备上进行一些信号处理,例如低通滤波噪声、带通限制、增量压缩。

为了获得良好的结果,我们使用了强大的有损量化算法,例如 mp3。但这些都很难理解和正确。

【讨论】:

    【解决方案2】:

    如果您的设备通过 MQTT 连接到我假设的 AWS IoT 核心,您不会发布任何内容?这通常是一个更轻量级的设置,然后 HTTP 和 MQTT 在实际 IoT 开发中是首选。除非您想在设备上对压缩算法进行编程,否则处理这些事情的最佳方式是通过 AWS IoT Core 发送您的数据并将 Lambda 操作连接到该传入消息。然后对 Lambda 进行编程以执行任何文件操作或压缩,然后将信息直接从 Lambda 发送到 DynomoDB 或 S3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 2020-05-24
      • 2015-11-09
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      相关资源
      最近更新 更多