Comment puis-je modifier Procfile pour lancer le processus Gunicorn dans un dossier non standard sur Heroku?
je suis nouveau à heroku et gunicorn donc je ne sais pas comment cela fonctionne. Mais j'ai fait quelques recherches et je pense que je suis sur le point de déployer mon application Django (1.5.1). Donc je sais que j'ai besoin d'un Procfile qui a
web: gunicorn app.wsgi
Parce que mes répertoires sont un peu différentes. Je ne peux pas exécuter gunicorn dans le répertoire racine
app_project
requirements/
contributors/
app/
app/
settings/
wsgi.py
# Normally Procfile goes here
Procfile
normalement app / serait le répertoire racine, mais j'ai décidé de structurer mes dossiers de cette façon pour séparer mon application django d'autres choses. Depuis que j'ai à mettez le Procfile dans le répertoire racine pour qu'heroku le reconnaisse, que dois-je mettre dans le Procfile et/ou quels paramètres dois-je placer dans la commande gunicorn?
Remarque:
web: gunicorn app.wsgi # won't work because Procfile is in a directory above
# I also want to keep the directories as is
# I also don't want to create a secondary git inside the app folder just for heroku
web: gunicorn app.app.wsgi # won't work because I don't want to convert the folder into a python module
3 réponses
comme @Graham Dumpleton l'a déclaré dans sa réponse, le problème de L'OP pourrait être résolu en modifiant son Procfile comme suit:
web: gunicorn --pythonpath app app.wsgi
Pourquoi cela fonctionne:
- rappelez-vous que le Procfile est simplement utilisé par Heroku pour démarrer les processus. Dans ce cas, gunicorn traite.
- Gunicorn est
--pythonpath
argument vous permet de joindre dynamiquement un répertoire à la liste des répertoires que l'exécution Python recherche quand faire module de recherche-ups. - En ajoutant
--pythonpath app
à la commande de gunicorn, l'interprète s'est fait dire:--18-->regardez à l'intérieur du répertoire app pour trouver un paquet (aussi) appelé app qui contient un module appelé wsgi.`
Le nom générique des dossiers de l'OP question peut obscurcir la syntaxe de la commande, qui est comme suit:
gunicorn --pythonpath <directory_containing_package> <package>.<module>
Plus D'Info:
Gunicorn Documentation
j'ai fait un vilain hack pour obtenir ce travail. Je vais donc poster ma réponse, mais j'espère que vous pourrez trouver une meilleure solution
Procfile
web: sh ./app/run.sh
app_project/app/run.sh
#!/bin/bash
cd app
gunicorn app.wsgi