# Uvicorn ASGI

> Async like Node.js, with slower CPU: a blocking call stalls the loop. Holds realtime connections at the design’s 30 KB each.

## Trade-offs

| Axis | Score |
| --- | --- |
| Throughput | |
| Tail latency | |
| Memory | |
| Velocity | |
| Resilience | |
| Operability | |

## Frameworks

- [Django](https://wiki.playquorum.dev/frameworks/django.md)
- [Flask](https://wiki.playquorum.dev/frameworks/flask.md)
- [FastAPI](https://wiki.playquorum.dev/frameworks/fastapi.md)

## Engineering terms

- [Event loop](https://wiki.playquorum.dev/glossary/event-loop.md)
- [Async I/O](https://wiki.playquorum.dev/glossary/async-io.md)
- [GIL (global interpreter lock)](https://wiki.playquorum.dev/glossary/gil-global-interpreter-lock.md)

## Facts

Uvicorn ASGI
- **Language:** Python
- **Concurrency:** One event loop
- **Speed:** ×0.2
- **Memory:** 120 MB
- **Startup:** 5 s
- **Warm-up:** 15 s
- **GC pause:** None
- **Unlocked by:** [ASGI with Uvicorn](https://wiki.playquorum.dev/research/asgi.md)
- **Velocity:** ×1.15
- **Salary:** ×1.05
- **Build:** 1 min

## See also

- [Runtimes and frameworks](https://wiki.playquorum.dev/runtimes.md)
- [Django](https://wiki.playquorum.dev/frameworks/django.md)
- [Flask](https://wiki.playquorum.dev/frameworks/flask.md)
- [FastAPI](https://wiki.playquorum.dev/frameworks/fastapi.md)

Source: https://wiki.playquorum.dev/runtimes/uvicorn
