Python 如何在系统之间传递大数据

Python 如何在系统之间传递大数据,python,xml,json,protocol-buffers,Python,Xml,Json,Protocol Buffers,我有以XML格式存储的定价数据,这些数据每小时生成一次。如果存储为XML,它的大小大约为100MB。我需要将此数据发送到我的主系统以处理此数据。将来,该数据大小也有可能发送1米 发送此数据的最佳方式是什么?到目前为止,我的想法是: - It would be too large to send as JSON to a POST endpoint - Possible to send it as XML and store it on my server 有更好的方法吗?假设您在linux上,

我有以XML格式存储的定价数据,这些数据每小时生成一次。如果存储为XML,它的大小大约为100MB。我需要将此数据发送到我的主系统以处理此数据。将来,该数据大小也有可能发送1米

发送此数据的最佳方式是什么?到目前为止,我的想法是:

- It would be too large to send as JSON to a POST endpoint
- Possible to send it as XML and store it on my server

有更好的方法吗?

假设您在linux上,并且数据已经写入文件系统的某个地方,为什么不在
crontab
条目中执行简单的
scp
rsync

您可能希望在发送之前进行压缩,或者在协议中启用压缩


如果您的数据只发生轻微变化,您也可以尝试发送一个与以前版本(使用
diff
生成)相对应的补丁,而不是发送整个数据,然后在另一端重新生成。

正如Michael Anderson在回答中提到的,您可能只会在每个系统中发送不同的变化

实现这一点的一种方法是引入git之类的协议

使用git,您可以:

  • 在第一个系统上生成数据并推送到私人回购
  • 让你的第二个系统去做改变
  • 这将比每次提取数据的整个副本效率更高


    它也会被压缩,并通过加密的通道(取决于git服务器/服务)

    压缩它。使用gzip或bzip2时,XML通常会收缩80%。您可以使用诸如scp甚至ftp之类的二进制协议进行复制。100Meg并不太大,无法通过html发送。我定期下载多个GIG文件。另一种思考方法是考虑如何处理数据。您可以将xml数据分解为关系数据库或类似mongodb的无sql数据库进行处理。这些系统可以进行复制,也可以让您的其他计算机远程访问数据库。
    rsync
    有一个
    -z
    选项,可以进行动态压缩。事实上,
    scp
    -C
    。它们的压缩效果并不总是像
    bzip-9
    那么好,但通常已经足够好了。这是一个非常聪明的想法。另一个优点是,如果发生错误,可以使用完整的提交历史记录回滚更改。仍然存在一些同步问题;主机无法确定是否已收到更新,以及什么会触发拉取请求?也许需要一个附加的应用层协议来协调。我用这种方式设置了一个绑定DNS集群和复制。主名称服务器执行git pull,如果响应不是“已经是最新的”,它将重新生成配置并将区域重新同步到从属名称服务器,然后重新加载。这个Python脚本作为cronjob每隔几分钟运行一次。