tutorial online python django heroku wsgi gunicorn

python - online - heroku tutorial



¿Cómo puedo modificar Procfile para ejecutar el proceso de Gunicorn en una carpeta no estándar en Heroku? (3)

Soy nuevo en heroku y gunicornio, así que no estoy seguro de cómo funciona esto. Pero hice algunas búsquedas y creo que estoy cerca de implementar mi aplicación Django (1.5.1). Sé que necesito un archivo de Procfile que tenga

web: gunicorn app.wsgi

Porque mis directorios son un poco diferentes. No puedo ejecutar a gunicornio en el directorio raíz

app_project requirements/ contributors/ app/ app/ settings/ wsgi.py # Normally Procfile goes here Procfile

Normalmente, la aplicación / sería el directorio raíz, pero decidí estructurar mis carpetas de esta manera para separar mi aplicación django de otras cosas. Como tengo que poner Procfile en el directorio raíz para que heroku lo reconozca, ¿qué debería poner en Procfile y / o qué parámetros debo colocar en el comando gunicornio?

Nota:

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


Como dijo @Graham Dumpleton en su respuesta, el problema del PO podría resolverse modificando su archivo de Procfile a lo siguiente:

web: gunicorn --pythonpath app app.wsgi

Por qué esto funciona:

  • Recuerda que el archivo de registro simplemente lo usa Heroku para iniciar procesos. En este caso, los procesos de gunicornio.
  • El argumento de --pythonpath permite asociar dinámicamente un directorio a la lista de directorios que el motor de ejecución de Python busca cuando realiza búsquedas de módulos.
  • Al agregar la --pythonpath app --pythonpath al comando gunicornio, básicamente se le dijo al intérprete '' busque dentro del directorio de la aplicación un paquete (también) llamado aplicación que contiene un módulo llamado wsgi. `

Los nombres genéricos de las carpetas en la pregunta del OP pueden oscurecer la sintaxis del comando, que es el siguiente: gunicorn --pythonpath <directory_containing_package> <package>.<module>

Más información:
Documentación de Gunicorn


Hice un truco feo para que esto funcione. Así que voy a publicar mi respuesta, pero espero que ustedes puedan encontrar una solución mejor

Procfile

web: sh ./app/run.sh

app_project / app / run.sh

#!/bin/bash cd app gunicorn app.wsgi


Tratar:

web: gunicorn --pythonpath app app.wsgi