The Configuration File

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.

Example gunicorn.conf.py

arbiter = "egg:gunicorn"  # Or "egg:gunicorn#eventlet" (eventlet or gevent)
backlog = 2048
bind = "127.0.0.1:8000" # Or "unix:/tmp/gunicorn.sock"
daemon = False          # Whether work in the background
debug = False           # Some extra logging
keepalive = 2           # Time we wait for next connection (in ms)
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
proc_name = None        # Change the process name
tmp_upload_dir = None   # Set path used to store temporary uploads
worker_connections=1000 # Number of connections accepted by a worker

after_fork=lambda server, worker: server.log.info(
        "Worker spawned (pid: %s)" % worker.pid),

before_fork=lambda server, worker: True

before_exec=lambda server: server.log.info("Forked child, reexecuting")

Parameter Descriptions

after_fork(server, worker):
This is called by the worker after initialization.
arbiter:
The arbiter you want to use. An arbiter maintain the workers processes alive. It launches or kills them if needed. It also manages application reloading via SIGHUP/USR2. By default it's egg:gunicorn#main. This arbiter only support fast clients connections. If you need to create a sleepy application or handling keepalive set it to egg:gunicorn#eventlet to use it with Eventlet or egg:gunicorn#gevent with Gevent. Eventlet arbiter can also be used with Twisted by using its helper.
backlog:
The backlog parameter defines the maximum length for the queue of pending connections see listen(2) for more information. The default is 2048.
before_fork(server, worker):
This is called by the worker just before forking.
before_exec(server):
This function is called before relaunching the master. This happens when the master receives a HUP or USR2 signal.
bind:
The address on which workers are listening. It can be a TCP address with a format of IP:PORT or a Unix socket address like unix:/path/to/socketfile.
daemon:
Whether or not to detach the server from the controlling terminal.
debug:
If True, only one worker will be launch and the variable wsgi.multiprocess will be set to False.
group:
The group in which worker processes will be launched.
keepalive:
Keepalive timeout. The default is 2 seconds, which should be enough under most conditions for browsers to render the page and start retrieving extra elements for. Increasing this beyond 5 seconds is not recommended. Zero disables keepalive entirely.
logfile:
The path to the log file - (stdout) by default.
loglevel:
The level at which to log. info, debug, or error for instance. Only log messages of equal or greater severity are logged.
pidfile:
A file to store the master's PID.
proc_name:
If setproctitle is installed, it allows you to set the process name for this Gunicorn instance.
umask:
Used to set the umask when daemonizing.
user:
The user as which worker processes will by launched.
worker_connections:
Number of connections a worker can handle when used with Eventlet or Gevent arbiter. The default is 1000.
tmp_upload_dir:
Set the path used to store temporarily the body of the request.