【发布时间】:2014-12-01 23:14:18
【问题描述】:
我使用 Amazon S3 作为我的网络服务的一部分。工作流程如下:
- 用户将大量文件上传到 Web 服务器。 Web 服务器首先将它们存储在本地,然后异步上传到 S3
- 用户发送 http-request 来启动作业(这是对这些上传文件的一些处理)
- Web 服务要求工作人员完成工作
- Worker 完成工作并将结果上传到 S3
- 用户向网络服务器请求下载链接,返回
somedbrecord.result_file.url - 用户使用此链接下载结果
为了处理文件,我使用QueuedStorage 后端。我像这样发起我的FileFields:
user_uploaded_file = models.FileField(..., storage=queued_s3storage, ...)
result_file = models.FileField(..., storage=queued_s3storage, ...)
其中queued_s3storage 是从...backends.QueuedStorage 派生的类的对象,remote 字段设置为'...backends.s3boto.S3BotoStorage'。
现在我计划在一台机器上部署整个系统以在本地运行所有内容,我想用基于我的本地文件系统的东西替换这个 '...backends.s3boto.S3BotoStorage'。
第一个解决方法是使用可以在本地“模拟”S3 的 FakeS3。有效,但这并不理想,只是额外的不必要的开销。
我有 Nginx 服务器运行并提供来自特定目录的静态文件。如何创建我的“远程存储”类,它实际上在本地存储文件,但提供指向 Nginx 提供的文件的下载链接? (类似于http://myip:80/filedir/file1)。 django 中是否有相应的标准库类?
【问题讨论】:
标签: python django amazon-web-services nginx amazon-s3