Uvicorn is an ASGI web server implementation for Python.
Uvicorn addresses the need for a minimal, low-level server interface that supports asynchronous Python frameworks. The ASGI specification provides a common standard for async web applications, and Uvicorn implements this specification to enable long-lived connections such as WebSockets and long-poll HTTP, which traditional WSGI servers cannot handle efficiently.
Uvicorn suits projects built on async Python frameworks that need WebSocket or long-polling support. It can be installed with minimal pure Python dependencies for basic use, or with optional extras for enhanced performance and development features like automatic reload. The README identifies several alternative ASGI servers: Daphne, which was the first ASGI implementation and supports HTTP/2; Hypercorn, which also supports HTTP/2 and the trio async framework as an alternative to asyncio; Mangum, which is an adapter for AWS Lambda; and Granian, a Rust-based server supporting HTTP/2 and TLS.
The project maintains active development with regular commits addressing bug fixes and feature improvements. The codebase shows consistent attention to both core functionality and optional performance paths, with clear separation between minimal and enhanced installation modes. Documentation is actively maintained alongside the implementation, and the project responds to issues and pull requests with engagement on technical details.