Django在开发和生产之间共享大文件存储库

时间:2019-02-14 15:07:31

标签: django django-models django-staticfiles django-storage

我正在尝试开发一个Django应用程序,该应用程序最终将服务于大型媒体文件存储库(10到100 GB),最终将存储在B2或S3上,而不是本地存储在服务器上。

对于与应用程序相关的静态内容,我想我知道您将在应用程序树中具有/ static /,在Web服务器树中具有/ static /。运行python manage.py collectstatic时,将对文件进行比较,并根据应用程序文件树更新Web服务器文件树。

由于这些内容最终将由用户上传,我是否应该考虑MEDIA_ROOTMEDIA_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

我觉得他们可能正在正确的道路上,但是讨论很少,所以我不知道其他选择。

我还应该考虑其他方法吗?

1 个答案:

答案 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