I'm new to heroku and gunicorn so I'm not sure how this works. But I've done some searching and I think I'm close to deploying my Django app (1.5.1). So I know I need a Procfile which has
web: gunicorn app.wsgi
Because my directories are a bit different. I can't run gunicorn in the root directory
app_project requirements/ contributors/ app/ app/ settings/ wsgi.py # Normally Procfile goes here Procfile
Normally app/ would be the root directory, but I decided to structure my folders this way to separate my django app from some other things. Since I have to put the Procfile in the root directory for heroku to recognize it, what should I put in the Procfile and/or what parameters should I place in the gunicorn command?
Note:
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
The Procfile is always a simple text file that is named Procfile without a file extension. For example, Procfile. txt is not valid. The Procfile must live in your app's root directory.
This file is used to explicitly declare your application's process types and entry points. It is located in the root of your repository. Procfile web: gunicorn myproject.wsgi. This Procfile requires Gunicorn, the production web server that we recommend for Django applications.
A Procfile is a text file named Procfile placed in the root of your application that lists the process types in an application. Each process type is a declaration of a command that is executed when a container of that process type is started.
Heroku is an excellent Platform As A Service (PAAS) provider that will host any Python HTTP application, and recommends using Gunicorn to power your apps. Unfortunately, the process model of Gunicorn makes it unsuitable for running production Python sites on Heroku.
Try:
web: gunicorn --pythonpath app app.wsgi
As @Graham Dumpleton stated in his answer, the OP's problem could be solved by modifying his Procfile to the following:
web: gunicorn --pythonpath app app.wsgi
Why this works:
--pythonpath
argument allows you to dynamically attach a directory to the list of directories that the Python runtime searches for when do module look-ups.--pythonpath app
to the gunicorn command, the interpreter was basically told 'look inside of the app directory for a package (also) called app which contains a module called wsgi.`The generic names of the folders in the OP's question can obscure the syntax of the command, which is as follows: gunicorn --pythonpath <directory_containing_package> <package>.<module>
More Info:
Gunicorn Documentation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With