On this page
Overview
Gunicorn is a Python HTTP server for UNIX built around a prefork worker model derived from Unicorn. It serves WSGI applications such as Django and Flask and now also provides an ASGI worker for FastAPI and Starlette plus beta HTTP/2 support.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Manage Python web applications through a master process and multiple workers
Gunicorn starts and supervises workers under a prefork model and offers sync, gthread, gevent, and ASGI worker types. WSGI applications such as Django and Flask and ASGI applications such as FastAPI and Starlette can use the same process-management layer.
Sources: [2]
Extend the serving layer with HTTP/2, the uWSGI protocol, and graceful worker management
The 26.x line includes beta HTTP/2, the uWSGI binary protocol for nginx integration, and graceful worker process management. HTTP/2 dependencies and worker choices remain explicit deployment decisions.
Best fit
Before adoption
Require Python 3.10+ and UNIX/POSIX, and test HTTP/2 and ASGI by worker and protocol
Gunicorn 26.2.2 requires Python 3.10 or newer and primarily targets UNIX/POSIX systems. HTTP/2 remains beta. Version 26.2.2 fixes an ASGI worker issue where HTTP/1.1 connections could close without a Connection: close header, so connection reuse and graceful shutdown deserve regression tests for the selected worker and protocol combination.
Official sources
- [1]benoitc/gunicorn — GitHub repository(2026-10-06)
- [2]Gunicorn 26.2.2 — README(2026-10-06)
- [3]Gunicorn 26.2.2 — pyproject.toml(2026-10-06)
- [4]Gunicorn 26.2.2 release(2026-10-06)
- [5]Gunicorn 26.2.2 changelog(2026-10-06)
- [6]Gunicorn MIT license(2026-10-06)
Supplemental curator note
Gunicorn now spans traditional WSGI deployments and an ASGI worker, but behavior depends on the selected worker and HTTP protocol. Treat beta HTTP/2 as a deployment-specific choice and test reverse proxy, keepalive, and graceful shutdown behavior explicitly.
Try it in 3 steps
- 1
Clone the reviewed Gunicorn source
Pin the reviewed tag so the official example application is available locally.
git clone --depth 1 --branch 26.2.2 https://github.com/benoitc/gunicorn.git && cd gunicorn - 2
Install Gunicorn 26.2.2
Install the same Gunicorn version in a Python 3.10 or newer environment.
python -m pip install "gunicorn==26.2.2" - 3
Start the official WSGI example with four workers
Combine the README Quick Start with
examples/test.py, then open http://127.0.0.1:8000/ and confirm Hello, World!.gunicorn examples.test:app --workers 4
Growth
Growth trends · Last 30 days
10,694 Stars
Trend data is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- http
- http-server
- python
- wsgi
- wsgi-server
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Salvo4,438 Stars
2 shared tag(s)
build Rust web services with HTTP/1-3, OpenAPI, WebSockets, and integrated TLS features
Rust - Eclipse Jetty4,097 Stars
2 shared tag(s)
Serve HTTP/1, HTTP/2, HTTP/3, WebSocket, and Servlet workloads in standalone or embedded Java deployments
Java - Netty35,068 Stars
1 shared tag(s) · 2 shared category(s)
Build high-connection protocol servers and clients in Java from event loops and channel pipelines
Java - reqwest11,864 Stars
1 shared tag(s) · 2 shared category(s)
use async or blocking Rust HTTP clients with JSON, TLS, proxies, and multipart support
Rust - Uvicorn11,009 Stars
3 shared tag(s) · 1 shared category(s) · Same language
serve ASGI applications over HTTP/1.1, HTTP/2, and WebSockets with a Python web server
Python - aiohttp16,569 Stars
3 shared tag(s) · Same language
build asyncio HTTP clients, servers, and WebSockets with one Python framework
Python
Report incorrect information
Tell us if any listing information is incorrect or outdated.