Загрузка файлов в развертывании 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 не подходит для обслуживания загруженных пользователем (медиа) файлов.

Другие вопросы по тегам