Gunicorn is a WSGI HTTP server for Python applications on UNIX systems.
Gunicorn solves the problem of running Python web applications in production by providing a lightweight, efficient application server. It uses a pre-fork worker model ported from Ruby's Unicorn project, spawning multiple worker processes to handle concurrent requests. This architecture allows the server to manage long-running or blocking operations without starving other requests, making it suitable for both fast clients and applications with slower response times.
Developers should choose Gunicorn if they are deploying WSGI-based frameworks like Django, Flask, or Pyramid, or ASGI applications such as FastAPI or Starlette. The tool is broadly compatible with various Python web frameworks and requires minimal configuration to get started. It offers multiple worker types including sync, gthread, gevent, and asgi to match different application characteristics. The project includes HTTP/2 support in beta and a Dirty Arbiters feature for handling heavy workloads involving machine learning models or long-running tasks. Gunicorn also supports the uWSGI binary protocol for integration with nginx reverse proxies.
The project maintains active community engagement through GitHub issues, an IRC channel on Libera.Chat, and documented contribution guidelines. Development includes regular feature additions such as per-app worker allocation and HTTP/2 support, indicating ongoing evolution to meet modern deployment needs. The maintainers explicitly seek financial support from users running Gunicorn in production, reflecting the volunteer-driven nature of the project's maintenance.