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
39
demandé sur eikonomega 2013-05-07 13:56:17

3 réponses

Essaie:

web: gunicorn --pythonpath app app.wsgi
49
répondu Graham Dumpleton 2013-05-08 00:05:09

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

39
répondu eikonomega 2013-10-30 00:44:42

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
3
répondu Derek 2013-05-07 10:20:55