- 我正在使用 Django 1.4。
- 有两台服务器(应用服务器和文件服务器)。
- 应用服务器使用 django、wsgi 和 apache 提供网络服务。
- 用户可以通过网络服务上传文件。
- 我想将这些文件直接上传到文件服务器。
- “直接”表示文件不通过应用服务器上传。
- 我想让文件服务器尽可能简单。文件服务器仅提供文件。
- 理想情况下,应用服务器和文件服务器之间的传输成本为零。
有人能告诉我怎么做吗?
请您参考如下方法:
您实际上不能同时执行这两项操作:
- 我想将这些文件直接上传到文件服务器。
- 我想让文件服务器尽可能简单。文件服务器仅提供文件。
根据您的要求,文件服务器需要同时提供文件服务和接受文件上传。
有几种方法可以将文件放到文件服务器上
- 最简单的方法就是先上传到 AppServer,然后再上传到另一台服务器。这就是大多数 AmazonS3 实现的样子。
- 如果两台机器在同一个 LAN 上,您可以使用 NFS 或类似的东西将 FileServer 的卷安装到 AppServer 上。用户上传到AppServer,但数据保存到真正在FileServer上的分区。
- 您可以让文件上传脚本在 FileServer 上运行。但是,您需要做一些复杂的事情:
- 有一种机制来验证上传文件的能力。你不能只使用authtkt,你需要有一些允许唯一的文件上传以及某种标识符和特权 token 的东西。我可能会选择带有时间戳的加密负载,并具有上传权限凭据 + 文件 ID。
- 在从 FileServer 成功上传到 AppServer 时进行回调,让它知道有效负载中的 ID 已成功接收。
