Ultra-fast async Python web framework — ASGI-native, batteries included
Project description
Veloce
Fast, ergonomic async Python web framework — ASGI-native, batteries included.
Documentation: veloceframework.com
Source code: https://github.com/Lokesh-Tallapaneni/veloce
Veloce framework (PyPI: veloceframework) is an ultra-fast async Python web framework — ASGI-native and batteries-included.
Veloce is a from-scratch async Python web framework. The router, request/response pipeline, dependency injection system, OpenAPI generator, WebSocket layer, and test client are all in-tree — not wrappers around an existing stack.
Position
Veloce is a from-scratch async Python web framework — not a wrapper around Starlette, FastAPI, or Flask. It provides FastAPI-style typed dependency injection, Pydantic v2 request/response validation, OpenAPI 3.1 schema generation, WebSocket support, and Flask-compatible helpers (g, flash, blueprints, session) in a single tree. It is built on a radix-tree router, an in-memory test client, and built-in CORS/CSRF/session/rate-limit/security-headers middleware. An external security review of the request path is planned ahead of 1.0; until then, treat it as pre-production software.
Key design points
- Async-first handlers.
async defhandlers run directly on the event loop; syncdefhandlers are supported transparently and run in a thread-pool executor so they do not block it. - Precompiled dispatch. Handler signatures are inspected once at
registration into a
HandlerPlan; the per-request hot path performs no reflection. - Radix-tree routing with typed path converters (
int,float,uuid,path, plus custom). - Typed dependency injection via
Depends,Security,SecurityScopes, includingyield-style dependencies with teardown. - OpenAPI 3.1 generated from Pydantic models, served through Swagger UI and ReDoc out of the box.
- In-memory test client drives the real ASGI surface — no sockets, no separate server process.
Requirements
Python 3.10+.
Veloce depends on a small native-extension stack: orjson,
httptools, pydantic v2, python-multipart, multidict, and
uvloop on non-Windows platforms.
Installation
pip install veloceframework
The installed package exposes the veloce import:
from veloce import Veloce
Example
Create main.py:
from veloce import Veloce
app = Veloce()
@app.get("/")
async def index() -> dict[str, str]:
return {"hello": "world"}
@app.get("/items/{item_id:int}")
async def read_item(item_id: int) -> dict[str, int]:
return {"item_id": item_id}
Run it with the built-in server (no extra dependencies):
veloce run main:app
uvicorn is an optional extra — install it (pip install veloceframework[uvicorn])
to serve under it or any other ASGI server, or use app.run() / the gunicorn
VeloceWorker:
uvicorn main:app
Open http://127.0.0.1:8000/items/42 to see {"item_id": 42}, or
http://127.0.0.1:8000/docs for the interactive OpenAPI UI.
Feature surface
| Area | Highlights |
|---|---|
| Routing | radix tree, path converters, blueprints with nesting, subdomain routing, host constraints |
| Requests | streaming bodies, multipart, JSON, MultiDict query/headers/cookies, rich URL/header accessors |
| Responses | JSONResponse, HTMLResponse, StreamingResponse, FileResponse, ETag/Last-Modified |
| Dependency inj. | Depends, Security, SecurityScopes, Annotated[T, Depends()], yield + teardown |
| Validation | Pydantic v2 query / path / header / cookie / body, structured 422 errors |
| OpenAPI | OpenAPI 3.1, Swagger UI, ReDoc, security schemes, webhooks, callbacks, operation_id |
| WebSockets | full ASGI surface, dependency injection, subprotocol negotiation (under an ASGI server), typed iter helpers |
| Middleware | CORS, GZip, TrustedHost, HTTPSRedirect, ProxyFix, Session, CSRF, BaseHTTPMiddleware |
| Templating | Jinja2 with url_for / g / current_app globals, async render, context processors |
| Sessions | signed cookies, server-side backend, permanent_lifetime, secret rotation |
| Testing | in-memory TestClient, multipart, cookies, follow-redirects, session_transaction |
| Tooling | veloce run, veloce routes, veloce shell (argparse-based CLI) |
The full Tier 0/1/2 feature matrix and per-feature design notes live in
docs/.
Project status
Veloce follows semantic versioning: the public
API surface — the names exported from veloce/__init__.py — is what each
release commits to. The current version is shown by the PyPI badge above.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file veloceframework-0.10.0.tar.gz.
File metadata
- Download URL: veloceframework-0.10.0.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fbc35cb44e9040ea8b353f9305fc731fd2f0fa9b82f335c97d72382c525ac5a
|
|
| MD5 |
bcf0172683e860cf086f828bbfd67610
|
|
| BLAKE2b-256 |
f5e5598322693968496926f2e9b812805724ce56f482aeb463561ab04b25dbf9
|
Provenance
The following attestation bundles were made for veloceframework-0.10.0.tar.gz:
Publisher:
release.yml on Lokesh-Tallapaneni/veloce
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
veloceframework-0.10.0.tar.gz -
Subject digest:
5fbc35cb44e9040ea8b353f9305fc731fd2f0fa9b82f335c97d72382c525ac5a - Sigstore transparency entry: 2168912170
- Sigstore integration time:
-
Permalink:
Lokesh-Tallapaneni/veloce@81547d80f9b5dccda54449d4ca3888fca06f1cdf -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/Lokesh-Tallapaneni
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@81547d80f9b5dccda54449d4ca3888fca06f1cdf -
Trigger Event:
push
-
Statement type:
File details
Details for the file veloceframework-0.10.0-py3-none-any.whl.
File metadata
- Download URL: veloceframework-0.10.0-py3-none-any.whl
- Upload date:
- Size: 643.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54f773ecbb9c0e0c7f96526be6763c12ea9ad2c356c648e8c57cbfc2c17ab397
|
|
| MD5 |
d59145a543e23d3b2f988e8f091addaa
|
|
| BLAKE2b-256 |
c7b342f882683883c9db7af388789e9c40b1e12543c94505296fa714371846bd
|
Provenance
The following attestation bundles were made for veloceframework-0.10.0-py3-none-any.whl:
Publisher:
release.yml on Lokesh-Tallapaneni/veloce
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
veloceframework-0.10.0-py3-none-any.whl -
Subject digest:
54f773ecbb9c0e0c7f96526be6763c12ea9ad2c356c648e8c57cbfc2c17ab397 - Sigstore transparency entry: 2168912192
- Sigstore integration time:
-
Permalink:
Lokesh-Tallapaneni/veloce@81547d80f9b5dccda54449d4ca3888fca06f1cdf -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/Lokesh-Tallapaneni
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@81547d80f9b5dccda54449d4ca3888fca06f1cdf -
Trigger Event:
push
-
Statement type: