Skip to content

# Quickstart

Get a Python web application running with Gunicorn in 5 minutes.

## Install

    pip install gunicorn

## Create an Application

Create `app.py`:

Flask FastAPI Django Plain WSGI

    from flask import Flask

    app = Flask(__name__)

    @app.route("/")
    def hello():
        return "Hello, World!"

    from fastapi import FastAPI

    app = FastAPI()

    @app.get("/")
    def hello():
        return {"message": "Hello, World!"}

Django projects already have a WSGI application at `myproject/wsgi.py`. No additional code is needed.

    def app(environ, start_response):
        data = b"Hello, World!"
        start_response("200 OK", [
            ("Content-Type", "text/plain"),
            ("Content-Length", str(len(data)))
        ])
        return [data]

## Run

    gunicorn app:app

For Django:

    gunicorn myproject.wsgi

For FastAPI (ASGI):

    gunicorn app:app --worker-class asgi

## Add Workers

Use multiple workers to handle concurrent requests:

    gunicorn app:app --workers 4

A good starting point is `2 * CPU_CORES + 1` workers.

## Bind to a Port

By default Gunicorn binds to `127.0.0.1:8000`. Change it with:

    gunicorn app:app --bind 0.0.0.0:8080

## Configuration File

Create `gunicorn.conf.py` for reusable settings:

    bind = "0.0.0.0:8000"
    workers = 4
    accesslog = "-"

Then run:

    gunicorn app:app

Gunicorn automatically loads `gunicorn.conf.py` from the current directory.

## Next Steps

- Run - Full CLI reference and framework integration
- Configure - Configuration file options
- Deploy - Production deployment with nginx and process managers
- Settings - Complete settings reference