Gunicorn

A fast, lightweight pre-fork WSGI and ASGI HTTP server for running Python web apps in production on UNIX.

Tool
PyPI
v26.2.0
10,707 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
85 /100 Excellent
Development Activity 76
Maintenance 72
Community 92
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
87 /100 Excellent
Architecture 90
Code Quality 86
Innovation 88
Learning Curve 85

Gunicorn (‘Green Unicorn’) is a Python WSGI and ASGI HTTP server for UNIX, built on a pre-fork worker model ported from Ruby’s Unicorn project. A master arbiter process supervises a pool of worker processes, restarting them when they die and reloading your application on signal, so a single command turns any WSGI or ASGI app into a resilient, production-ready service.

Broadly compatible with Django, Flask, Pyramid, FastAPI, Starlette, and any framework speaking the WSGI or ASGI protocol, Gunicorn is simply implemented, light on server resources, and fast. It ships several interchangeable worker types — synchronous, threaded, gevent, tornado, and ASGI — so you can match the concurrency model to your workload without changing application code.

What You Get

  • A single gunicorn command that boots and supervises a pool of worker processes for any WSGI or ASGI application.
  • Interchangeable worker types — sync, gthread, gevent, tornado, and asgi — selectable via --worker-class to fit your concurrency needs.
  • A master arbiter that keeps workers alive, restarts crashed processes, and supports zero-downtime reloads via SIGHUP and USR2.
  • Extensive configuration through CLI flags, a Python config file, or environment variables, with server hooks for lifecycle events.
  • Broad framework compatibility with Django, Flask, Pyramid, FastAPI, Starlette, and Paste-compatible deployments.

Common Use Cases

  • Serving a Django or Flask application in production behind an nginx reverse proxy.
  • Running FastAPI or Starlette ASGI apps with the dedicated ASGI worker class.
  • Scaling request handling across CPU cores by tuning the number of pre-forked workers.
  • Handling large numbers of concurrent, I/O-bound connections with gevent or threaded workers.

Under The Hood

Architecture Gunicorn implements a classic pre-fork model centered on the Arbiter class in gunicorn/arbiter.py, a master process that owns the listening sockets, spawns a configurable pool of workers, and keeps them alive by trapping UNIX signals — SIGHUP for reload, USR2 for binary upgrades, TTIN/TTOU to scale workers up and down. Your application is wrapped by a BaseApplication in gunicorn/app/base.py (with WSGIApplication as the CLI entry point), which loads your callable and hands it to workers; each worker in gunicorn/workers/ runs its own accept-and-serve loop, from the blocking SyncWorker in sync.py to threaded, gevent, tornado, and ASGI variants that subclass a shared base.

Tech Stack The project is pure Python (99% of the codebase), targets Python 3.10+, and is remarkably dependency-light — the only hard runtime requirement is packaging. Optional extras pull in gevent, tornado, or h2 for alternative worker classes and HTTP/2, and setproctitle for nicer process names. It builds with setuptools via pyproject.toml, exposes gunicorn and gunicornc console scripts, and integrates as a paste.server_runner entry point.

Code Quality The repository is mature and well-tested, with roughly 280 test modules under tests/ covering config parsing, HTTP handling, worker behavior, and the arbiter, driven by pytest and tox across multiple Python versions. A .pylintrc, structured config.py with a declarative KNOWN_SETTINGS registry, and clear module boundaries reflect a disciplined, long-maintained codebase. Every source file carries the MIT license header and the code favors explicit, readable control flow over cleverness.

API Design Developer experience is a core strength: a single gunicorn myapp:app command gets an app into production, and nearly every behavior is tunable through consistently named CLI flags, a Python config file, or environment variables. Settings are self-documenting via the config.py metadata, worker models swap in with a single --worker-class flag, and lifecycle hooks let operators inject custom logic, backed by a full documentation site at gunicorn.org and an examples/ directory of ready-to-run configurations.

Used by 33 apps in this directory

Python
47%
MIT

Docs

CMS · File Storage

16,942

Open-source collaborative knowledge platform with real-time editing, AI writing tools, and full self-hosting control — built by the French and German governments.

View details
88
Repo Health
81
Technical
68
Dependency
Built with
Python 47%
TypeScript 46%
Updated 1 weeks ago
Go
49%
MIT

Dokku

Devops · Hosting Control Panel

32,202

The smallest PaaS implementation you've ever seen — deploy apps via git push using Docker and Heroku buildpacks on your own server.

View details
93
Repo Health
85
Technical
66
Dependency
Built with
Go 49%
Shell 48%
Updated 6 days ago
C#
42%
MIT

FeatBit

Developer Tools · Devops

1,946

Self-hosted, enterprise-grade feature flag platform for safe, targeted, and data-driven feature releases.

View details
90
Repo Health
78
Technical
69
Dependency
Built with
C# 42%
TypeScript 41%
Updated 6 days ago
Python
63%
BSD 3

Flagsmith

Ab Testing Experimentation · Developer Tools · Devops

6,613

Open-source feature flagging, remote config, and A/B/multivariate testing platform for web, mobile, and server-side apps — self-host or use the hosted SaaS.

View details
90
Repo Health
82
Technical
63
Dependency
Built with
Python 63%
TypeScript 32%
Updated 6 days ago
Python
82%
Apache 2.0

headroom

AI Development · Developer Tools

77,676

Compress everything your AI agent reads — tool outputs, logs, RAG chunks, and files — before it reaches the LLM, achieving 60–95% fewer tokens with the same answers.

View details
85
Repo Health
86
Technical
69
Dependency
Built with
Python 82%
Rust 12%
Updated 6 days ago
HTML
45%
LGPL-2.1

Horilla

ERP · Human Resources

1,470

Open-source HRMS covering recruitment, attendance, payroll, and biometrics in one self-hosted Django application.

View details
91
Repo Health
60
Technical
64
Dependency
Built with
HTML 45%
Python 41%
JavaScript 11%
Updated 1 weeks ago
TypeScript
55%
Other

Jaaz

AI Agents · AI Design Tools

6,721

Open-source AI creative agent that turns visual sketches and canvas gestures into images and videos — no text prompts required.

View details
45
Repo Health
59
Technical
71
Dependency
Built with
TypeScript 55%
Python 34%
JavaScript 10%
Updated 8 months ago
Python
64%
Other

Keep

Automation · Devops · Monitoring

12,433

The open-source AIOps and alert management platform that unifies 130+ monitoring tools into a single pane of glass with AI-powered correlation, deduplication, and workflow automation.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
Python 64%
TypeScript 36%
Updated 1 weeks ago
Python
51%
AGPL 3.0

Khoj

AI Assistants · Knowledge Management · Productivity

37,802

A self-hostable AI second brain that chats with your documents, searches the web, builds custom agents, and runs entirely on your own LLM.

View details
62
Repo Health
82
Technical
66
Dependency
Built with
Python 51%
TypeScript 36%
Updated 2 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers