Я использую Amazon S3 как часть моего веб-сервиса. Рабочий процесс следующий:Локальная файловая система как удаленное хранилище в Django
- Пользователь загружает множество файлов на веб-сервер. Web-сервер сначала сохраняет их локально, а затем загружать их в S3 асинхронно
- Пользователь посылает HTTP-запрос, чтобы начать работу (что некоторая обработка этих загруженных файлов)
- Веб-служба просит работник, чтобы сделать работу
- работник делает то работа и добавления приводит к 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'
чем-то, основанным на моей локальной файловой системе.
Первым обходным путем было использование FakeS3, который может «подражать» S3 локально. Работает, но это не идеально, просто лишние лишние накладные расходы.
У меня есть сервер Nginx, работающий и обслуживающий статические файлы из определенных каталогов. Как создать класс «удаленного хранения», который на самом деле хранит файлы локально, но предоставляет ссылки для загрузки, которые приводят к файлам, обслуживаемым Nginx? (что-то вроде http://myip:80/filedir/file1
). Существует ли стандартный класс библиотеки для django?
Спасибо! MEDIA_URL - это то, что я искал –
. Что HOSTNAME вы упомянули, что-то встроенное в django? Или это моя собственная переменная, которую я указываю в settings.py? –
Ваша собственная переменная. – pztrick