Python / Uvicorn Fundamentals Interview Questions
What is Granian and how does it compare to Uvicorn as an ASGI server alternative?
Granian is a newer ASGI-compatible HTTP server written in Rust using Tokio and hyper. It is designed as a high-performance alternative to Uvicorn, with native HTTP/2, TLS, and WebSocket support baked in.
| Feature | Uvicorn | Granian |
|---|---|---|
| Language | Python (Cython extensions) | Rust |
| HTTP/1.1 | Yes | Yes |
| HTTP/2 | No | Yes (built-in) |
| TLS/SSL | Yes | Yes (native) |
| WebSockets | Yes | Yes |
| Process management | Via Gunicorn | Built-in (--workers flag) |
| Python version | 3.10+ | 3.8+ |
| Maturity | Very mature | Newer - actively developed |
| Ecosystem | Huge - FastAPI, Starlette, etc. | ASGI-compatible with same frameworks |
# Install Granian pip install granian # Run the same FastAPI/Starlette/ASGI app: granian --interface asgi main:app # With HTTP/2 + TLS: granian --interface asgi main:app \ --host 0.0.0.0 \ --port 443 \ --ssl-certificate cert.pem \ --ssl-keyfile key.pem \ --http2 # Workers: granian --interface asgi main:app --workers 4
When to consider Granian: if you need native HTTP/2 without a reverse proxy, or want to explore Rust-speed performance for your ASGI app. For most production use cases, Uvicorn (with Gunicorn) remains the default choice due to its maturity, documentation, and ecosystem support. Granian is noted in Uvicorn's own documentation as a Rust-based ASGI alternative.
More Related questions...