我正在尝试开发一个Django应用程序,该应用程序最终将服务于大型媒体文件存储库(10到100 GB),最终将存储在B2或S3上,而不是本地存储在服务器上。
对于与应用程序相关的静态内容,我想我知道您将在应用程序树中具有/ static /,在Web服务器树中具有/ static /。运行python manage.py collectstatic
时,将对文件进行比较,并根据应用程序文件树更新Web服务器文件树。
由于这些内容最终将由用户上传,我是否应该考虑MEDIA_ROOT
和MEDIA_URL
的设置?然后,这些将成为准备之前的暂存区域,并上传到B2或S3。
我已经检查了这些:
http://docs.mongoengine.org/guide/querying.html#atomic-updates
Identical and simple way of serving static files in development and production - is it possible?
Django: Deploying static files in production environment
serving django media (user uploaded) files in production
我觉得他们可能正在正确的道路上,但是讨论很少,所以我不知道其他选择。
我还应该考虑其他方法吗?
答案 0 :(得分:0)
我建议您阅读此Blog post。
您基本上只能在开发服务器上运行static final class RetryRequestedException extends Exception { }
// no need for more than one of this
static final RetryRequestedException RETRY_INDICATOR = new RetryRequestedException();
source1.flatMap(value1 ->
source2.flatMap(value2 -> {
if (value2.notValid) {
return Observable.error(RETRY_INDICATOR);
}
return Observable.just(value2);
})
)
.retry(3, error -> error == RETRY_INDICATOR)
...
才能将文件推送到 S3 。不需要将图像添加到版本控制和Django服务器中。
如果您还希望对图像进行版本控制,建议使用Git Large File Storage。