Загрузка файлов в развертывании Heroku с помощью Django
Таким образом, я наконец-то смог настроить локальный тестовый проект + prod, над которым я работаю.
# wsgi.py
from dj_static import Cling, MediaCling
application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)
Я установил статические файлы, используя whitenoise (без каких-либо проблем) и мультимедиа ( загрузка файлов), используя dj_static и Postgres для local + prod. Сначала все работает нормально... статические файлы, загрузка файлов.
Но после перезапуска динамов Heroku я теряю все загрузки файлов. Мой вопрос: --- Так как я подаю медиа-файлы из приложения Django вместо чего-то вроде S3, перезапуск dyno также уничтожает все это?
PS: я знаю, что могу сделать это с AWS и т. Д., Но я просто хочу знать, является ли это причиной того, что я теряю все загрузки.
1 ответ
Поскольку я передаю медиа-файлы из приложения Django вместо чего-то вроде S3, перезапуск dyno также уничтожает все это?
Да!. Вот так. Согласно документам Heroku:
Каждый dyno получает свою собственную эфемерную файловую систему со свежей копией самого последнего развернутого кода.
Смотрите также этот ответ и этот ответ.
Вывод: для медиа-файлов (загруженных) вы должны использовать какой-либо внешний сервис (например, S3 или что-то). whitenoise
только для статических файлов. Смотрите здесь, почему whitenoise не подходит для обслуживания загруженных пользователем (медиа) файлов.