Gunciorn 0.5 introduced the ability to use a Python configuration file. Gunicorn will look for gunicorn.conf.py in the current working directory or what ever path is specified on the command line with the -c option.
A configuration file with default settings would look like this:
bind = "127.0.0.1:8000" # Or "unix:/tmp/gunicorn.sock"
daemon = False # Whether work in the background
debug = False # Some extra logging
logfile = "-" # Name of the log file
loglevel = "info" # The level at which to log
pidfile = None # Path to a PID file
workers = 1 # Number of workers to initialize
umask = 0 # Umask to set when daemonizing
user = None # Change process owner to user
group = None # Change process group to group
def after_fork(server, worker):
fmt = "worker=%s spawned pid=%s"
server.log.info(fmt % (worker.id, worker.pid))
def before_fork(server, worker):
fmt = "worker=%s spawning"
server.log.info(fmt % worker.id)
def before_exec(server):
serer.log.info("Forked child, reexecuting.")
While some others HTTP proxies can be used we strongly advice you to use NGINX. If you choose another proxy server, make sure it can do buffering to handle slow clients.
An example config file for use with nginx is available at github.com/benoitc/gunicorn/blob/master/examples/nginx.conf.
You may want to monitor Gunicorn service instead of launching it as daemon. You could for example use runit for that purpose. An example config file for use with runit is available at github.com/benoitc/gunicorn/blob/master/examples/gunicorn_rc.