Heaven is the absolute minimal, insanely fast ASGI web framework for Python purists. It doesn't just get out of your way; it vanishes, leaving you with raw performance and total control.
"Mastery in 30 minutes or less. No grey spots, just pure Python."
| Feature | Heaven | FastAPI | Flask | Django |
|---|---|---|---|---|
| Learning Curve | 30 Mins | High | Low | Extreme |
| Throughput (measured) | 12,517 req/s | 6,223 req/s | 1,190 req/s | 1,784 req/s |
| Boilerplate | Zero | Medium | Low | Massive |
| Mastery | Complete | Partial | High | Low |
| Background Jobs | Native (Daemons) | External | External | External |
- Stupid Simple: Built for engineers who hate bloat. If you know Python, you already know Heaven.
- Blazing Fast: A thin layer over ASGI, optimized for high-concurrency and low-latency.
- Batteries Included (The right ones): Native support for application mounting, centralized hooks (
.BEFORE/.AFTER), and powerful background Daemons. - Transparent: No magic decorators that hide logic. Just clear, explicit routing.
Hello-world JSON throughput, one worker process each, default out-of-the-box configuration, generated by the script checked in at benchmarks/compare.py:
| Framework | Served by | Requests/sec | Relative |
|---|---|---|---|
| Heaven 2.0.0 | uvicorn | 12,517 | 1.00x |
| FastAPI 0.141.1 | uvicorn | 6,223 | 0.50x |
| Django 6.0.7 (ASGI) | uvicorn | 1,784 | 0.14x |
| Flask 3.1.3 | gunicorn | 1,190 | 0.10x |
Roughly 2x FastAPI, 7x Django and 10x Flask, measured on the same box: an Intel i5-8350U laptop, Python 3.12, 48 keep-alive connections, median of three 5 second rounds. ASGI apps run under uvicorn[standard], Flask runs under gunicorn's default sync worker. Absolute numbers are hardware-dependent, so reproduce them on yours before quoting:
pip install heaven fastapi flask django 'uvicorn[standard]' gunicorn
python benchmarks/compare.py- Install
$ pip install heaven- Code
from heaven import App, Request, Response, Context
app = App()
# Centralized Auth / Pre-processing
async def auth(req, res, ctx):
if not req.headers.get('Authorization'):
res.status = 401
res.abort('Unauthorized')
app.BEFORE('/api/*', auth)
# Simple Handler
async def welcome(req, res, ctx):
res.body = {"message": "Welcome to Heaven"}
app.GET('/api/v1/welcome', welcome)- Protect (Automatic OpenAPI)
from typing import Annotated, TypedDict
class User(TypedDict):
name: Annotated[str, 'min_len=2']
app.schema.POST('/user', expects=User, summary="Create User")
app.DOCS('/docs')- Fly (CLI) Heaven comes with a beautiful, zero-config CLI.
pip install heaven
# Auto-discovery & run with reload
heaven fly
# Visualize your API structure
heaven routes- Daemon (Background)
async def pulse(app):
print("Heartbeat...")
return 5 # Run every 5 seconds
app.daemons = pulse- Run (Standard)
$ uvicorn app:app --reload- Full Documentation: https://rayattack.github.io/heaven
- PyPi: https://pypi.org/project/heaven
- Source: Github
We love builders. See the Contribution Guidelines.