【问题标题】:Efficient way to transfer data from one django application to another将数据从一个 django 应用程序传输到另一个应用程序的有效方法
【发布时间】:2012-07-05 10:59:21
【问题描述】:

目前,我正在开展一个项目,在该项目中,两个运行在不同主机上的 django 应用程序之间存在服务器 - 客户端关系。

服务器必须存储和提供大量的关系数据,例如:供应商、公司、产品等。

客户端根据请求从服务器下载数据并将其添加到他们的数据库中。客户也可以从他们的站上传到数据库来扩展它。

之前开发此工具的人使用 XMLRPC 将庞大的(通常为 13MB)XML 文件从服务器传输到客户端。现在实际上我们发送的只是要存储在数据库中的与数据库无关的对象,所以我想知道是否有更有效的方法来做到这一点?

如果您需要,请询问更多详细信息,我不太确定您需要知道什么

编辑:在网络和服务器端处理方面高效。客户可以完成繁重的工作。

【问题讨论】:

  • 网络带宽效率高吗?在将原始数据转换为数据库就绪格式所需的处理方面?

标签: django performance client-server xml-rpc


【解决方案1】:

共享数据库设计似乎更合适。但当然可能有安全、政治或组织方面的原因排除了这种可能性。此外,还需要进行大量的重新设计。

要减少网络带宽,首先检查是否启用了 HTTP gzip 压缩。

如果它只是一个愚蠢的数据传输,JSON 通常会比 XMLRPC 紧凑得多。数据看起来是否适合直接转换为 JSON?这仍然需要一些服务器端处理。

对于最少的服务器端处理(如果数据库表相对相似),仅向客户端发送相关数据库查询的转储可能非常有效。当然,除非表具有相同的架构,否则您将不得不对原始 SQL 进行一些客户端处理,这并不理想。

【讨论】:

  • 客户端和服务器是互联网的另一端,不能信任客户端直接访问,我如何在python xmlrpc上启用gzip?,Json可能会更好,因为它是一个数据即时生成的传输,并且表格两边几乎完全相同。
  • 您可以通过查看 firbug 或 equivelant 中的响应标头来检查服务器上是否启用了 gzip。至于启用它 - 选择你的层 - 它可以在你的网络服务器中完成(检查它的文档),在 Django 中间件 - docs.djangoproject.com/en/dev/ref/middleware/… - 或每个视图 - docs.djangoproject.com/en/dev/topics/http/decorators/…
  • 好的,那么我将如何将我的对象(查询集)编码为 json?
  • 所以我要做的是获取生成 XMLRCP 的代码,看看是否可以重写它以使用 django.utils.simplejson - 我建议在交互式 shell 中玩几个小时的虚拟数据. simplejson 有据可查,JSON 格式非常易于使用。
  • simplejson 不喜欢 django 的查询集(已经在玩 :P),但我现在正在尝试查看是否可以让 django 的内置序列化器工作
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多