A lightweight ASGI web server implementation for Python, supporting HTTP/1.1 and WebSockets.
Uvicorn is an ASGI web server implementation for Python that provides a minimal low-level interface for async frameworks. It solves the problem of Python lacking a common server/application interface for asynchronous web applications, supporting HTTP/1.1 and WebSockets to enable modern web features.
Python developers building asynchronous web applications with frameworks like FastAPI, Starlette, or Django Channels who need a lightweight, high-performance ASGI-compliant server.
Developers choose Uvicorn for its minimal design, excellent performance with optional Cython-based optimizations, and full compliance with the ASGI specification, ensuring interoperability across async Python frameworks.
An ASGI web server, for Python. 🦄
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements a low-level interface that decouples server logic from application frameworks, enabling ecosystem interoperability as per the ASGI specification.
Optional Cython-based dependencies like uvloop and httptools significantly boost speed for HTTP/1.1 and WebSocket handling, as highlighted in the quickstart.
Includes hot reloading (--reload), colored logs, and environment file support via python-dotenv, enhancing the local development experience.
Handles real-time WebSocket connections efficiently, with optional libraries like websockets, making it suitable for modern async applications.
Lacks support for HTTP/2, unlike competitors such as Daphne and Hypercorn mentioned in the README, which can limit performance for applications needing multiplexing.
Full functionality requires installing the 'standard' extras for optimizations and features like WebSockets, adding deployment steps and potential dependency issues.
Built solely on asyncio, so it doesn't support alternative async frameworks like trio, which Hypercorn offers, restricting framework choice.