2017-04-15 1 views
0

J'ai donc finalement pu mettre en place un projet de test local + prod sur lequel je travaille.Upload de fichiers dans le déploiement de Heroku avec Django

# wsgi.py 
from dj_static import Cling, MediaCling 

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

Je mis en place des fichiers statiques à l'aide whitenoise (sans aucun problème) et les médias (téléchargements de fichiers) en utilisant dj_static et Postgres pour prod local +. Tout fonctionne bien au début ... les fichiers statiques, les téléchargements de fichiers. Mais après le redémarrage de Heroku dynos, je perds tous les téléchargements de fichiers. Ma question est, --- Puisque je sers les dossiers de médias de l'application de Django au lieu de quelque chose comme S3, le redémarrage de dyno efface-t-il tout cela aussi? PS: Je suis conscient que je peux le faire avec AWS, etc, mais je veux juste savoir si c'est la raison pour laquelle je perds tous les téléchargements.

Répondre

6

Étant donné que je traite les fichiers multimédias de l'application Django au lieu de quelque chose comme S3, le redémarrage du dyno efface-t-il tout cela?

Oui !. C'est vrai. Selon le Heroku docs:

Chaque dyno obtient son propre système de fichiers éphémère, avec une nouvelle copie du dernier code déployé.

Voir aussi this réponse et this réponse. Conclusion: Pour les fichiers multimédias (ceux téléchargés), vous devez utiliser un service externe (comme S3 ou autre). whitenoise est juste pour les fichiers statiques. Voir here pourquoi whitenoise ne convient pas pour le traitement des fichiers (médias) téléchargés par l'utilisateur.

+0

Super, je voulais être sûr de tout ça. Merci ! – Nifled