gunicorn

The short story

Running your pyramid based application with gunicorn can be as easy as:

$ gunicorn --paste production.ini

The long story

Similar to the pserve command that comes with Pyramid, gunicorn can also directly use your project's INI files, such as production.ini, to launch your application. Just supply the --paste command line option together with the path of your configuration file to the gunicorn command, and it will try to load the app.

As documented in the section Paste Deployment, you may also add gunicorn specific settings to the [server:main] section of your INI file and continue using the pserve command.

The following configuration will cause gunicorn to listen on a unix socket, use four workers, preload the application, output accesslog lines to stderr and use the debug loglevel.

[server:main]
use = egg:gunicorn#main
bind = unix:/var/run/app.sock
workers = 4
preload = true
accesslog = -
loglevel = debug

For all configuration options that may be used, have a look at the available settings.

Keep in mind that settings defined within a gunicorn configuration file take precedence over the settings established within the INI file.

For all of this to work, the Python interpreter used by gunicorn also needs to be able to load your application. In other words, gunicorn and your application need to be installed and used inside the same virtualenv.

Naturally, the paste option can also be combined with other gunicorn options that might be applicable for your deployment situation. Also you might want to put something like nginx in front of gunicorn and have gunicorn supervised by some process manager. Please have a look at the gunicorn website and the gunicorn documentation on deployment for more information on those topics.