Загрузка файлов в развертывании Heroku с помощью Django

Итак, я наконец смог настроить локальный + тестовый проект, над которым я работаю.

# wsgi.py 
from dj_static import Cling, MediaCling

application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)

Я настроил статические файлы с помощью whitenoise (без проблем) и медиа (загрузка файлов) с помощью dj_static и Postgres для локального + прод. Сначала все работает нормально... статические файлы, загрузка файлов.

Но после перезапуска Heroku dynos я теряю все загрузки файлов. Мой вопрос: --- Поскольку я использую медиафайлы из приложения Django вместо чего-то вроде S3, перезапуск dyno также стирает все это?

PS: я знаю, что могу сделать это с AWS и т. Д., Но я просто хочу знать, не по этой ли причине я теряю все загрузки.


person Nifled    schedule 15.04.2017    source источник


Ответы (1)


Поскольку я обслуживаю медиафайлы из приложения Django, а не из чего-то вроде S3, перезапуск dyno также стирает все это?

Да!. Вот так. Согласно документам Heroku:

Каждый dyno получает свою собственную эфемерную файловую систему со свежей копией самого последнего развернутого кода.

См. также этот ответ и этот ответ.

Вывод: для медиафайлов (загруженных) вы должны использовать какой-то внешний сервис (например, S3 или что-то в этом роде). whitenoise предназначен только для статических файлов. См. здесь, почему whitenoise не подходит для обслуживания пользователей -загруженные (медиа) файлы.

person nik_m    schedule 15.04.2017
comment
Отлично, я хотел убедиться во всем этом. Спасибо ! - person Nifled; 15.04.2017