2
  • 我正在使用 Django 1.4。
  • 有两个服务器(应用程序服务器和文件服务器)。
  • 应用服务器使用 django、wsgi 和 apache 提供 Web 服务。
  • 用户可以通过网络服务上传文件。
  • 我想直接将这些文件上传到文件服务器。
  • “直接”表示文件不通过应用服务器上传。
  • 我想让文件服务器尽可能简单。文件服务器只提供文件。
  • 理想情况下,应用服务器和文件服务器之间的传输成本为零。

有人可以告诉我该怎么做吗?

4

2 回答 2

1

您实际上不能同时执行这两项操作:

  • 我想直接将这些文件上传到文件服务器。
  • 我想让文件服务器尽可能简单。文件服务器只提供文件。

根据您的要求,文件服务器需要同时提供文件服务和接受文件上传。

有几种方法可以将文件放到 FileServer 上

  • 最简单的方法就是上传到 AppServer,然后再上传到另一台服务器。这就是大多数 AmazonS3 实现的样子。
  • 如果两台机器在同一个 LAN 上,您可以使用 NFS 或类似的东西将 FileServer 的一个卷安装到 AppServer 上。用户上传到 AppServer,但数据被保存到一个真正在 FileServer 上的分区。
  • 您可以在 FileServer 上运行文件上传脚本。但是,您需要做一些复杂的事情:
    • 有一种机制来验证上传文件的能力。你不能只使用 authtkt,你需要有一些东西可以允许一个且只有一个文件上传以及某种标识符和特权令牌。我可能会选择一个带有时间戳的加密有效负载,并具有上传权限凭证+文件的 ID。
    • 从 FileServer 成功上传到 AppServer 时有一个回调,让它知道有效负载中的 id 已成功接收。
于 2012-09-27T14:28:40.153 回答
0

我认为您需要的是django 1.4 的静态 url 设置,以便从应用服务器提供文件服务器文件。要将文件上传到文件服务器,您可以编写托管在此服务器上的 python 或 php 脚本(假设 apache2 服务器或类似服务器)来完成工作。

我你有这个想法,我认为你不需要跟踪上传的文件(考虑到使用这个解决方案你不能)

于 2012-09-27T13:55:34.327 回答