This release is a pre-release and may not be stable for production use.
RustAPI
FastAPI-style Python Web Framework backed by a Rust (Tokio / Hyper) Engine — with embedded Rust Database Streaming, JWT & Argon2 Primitives, Tier 3 Rust-Native Routes, and a built-in MCP Server.
📦 Key Open-Source Features Included
| Feature Area | Implementation Details |
|---|---|
| FastAPI Compatibility | FastAPI & Request aliases, status codes, declared status_code (e.g. 201, 204), async/sync response_model with response_model_exclude/include, structured 422 validation error handling, FastAPI(lifespan=...) ASGI context managers, Depends(..., scope="function"), EventSourceResponse (SSE), jsonable_encoder, Query/Body/Path/Form/File, OAuth2PasswordBearer, HTTPBearer, APIKeyHeader, OpenIdConnect, get_openapi, app.frontend(). |
| HTTP & Routing | FastAPI-style @app.get, @app.post, APIRouter, Depends, app.dependency_overrides, response_model, reload=True. |
| Rust-Native Tier 3 Routes | app.add_native_route() zero-GIL C-speed fast-paths (50,000+ req/sec). |
| Database Engine | sqlx SQLite & PostgreSQL pool (app.connect_db()) with zero-copy JSON streaming (db.query_json()). |
| Power Primitives | Native Rust encode_jwt() / decode_jwt(), Argon2 hash_password() / verify_password(), MiniJinja render_template(). |
| Response Classes | HTMLResponse, JSONResponse, PlainTextResponse, RedirectResponse, StreamingResponse, EventSourceResponse. |
| Request Ergonomics | req.json(), req.form, req.body, UploadFile, WebSocket. |
| AI / MCP Integration | Embedded Model Context Protocol server (@app.tool(), @app.resource(), @app.prompt()) at POST /mcp. |
| Telemetry & Observability | Terminal access logging (INFO: 127.0.0.1 - "GET /render HTTP/1.1" 200 - 0.45ms), Swagger UI (/docs), OpenAPI (/openapi.json). |
⚡ Framework Standing & Multi-Framework Benchmarks
rustapi delivers 100% FastAPI developer experience (DX) while running on a high-performance Rust (Tokio/Hyper) core engine.
┌───────────────────────────────────────────────────────────┐
│ Python Layer (DX) │
│ FastAPI Syntax • Pydantic Models • Routers • SSE • Docs │
└─────────────────────────────┬─────────────────────────────┘
│ PyO3 C-Bindings
┌─────────────────────────────▼─────────────────────────────┐
│ Rust Tokio/Hyper Core │
│ Async Multi-Thread IO • Tokio Workers • sqlx DB • SSE │
└───────────────────────────────────────────────────────────┘
📊 Empirical Benchmark Results (oha Load Generator, $c=32$)
Measured under identical business logic and schemas across Python and Node.js frameworks:
| Workload Scenario | FastAPI (uvloop) |
Express.js | RustAPI (v1.8.9) | Fastify (Node.js) | RustAPI Native Tier 3 |
|---|---|---|---|---|---|
Sync JSON (GET /json) |
3,417 req/s | 12,873 req/s | 10,178 req/s (⚡ 3.0x vs FastAPI) | 17,063 req/s | 🚀 96,386 req/s (⚡ 7.5x vs Express) |
Async JSON (GET /async_json) |
5,430 req/s | 13,638 req/s | 8,117 req/s (⚡ 1.5x vs FastAPI) | 17,122 req/s | N/A |
Validated POST (POST /items) |
2,762 req/s | 10,529 req/s | 8,621 req/s (⚡ 3.1x vs FastAPI) | 13,463 req/s | N/A |
Response Model (50 items) (GET /users) |
1,916 req/s | 10,072 req/s | 1,928 req/s (⚡ Lower p95) | 11,145 req/s | N/A |
High Concurrency (c=100) |
6,088 req/s | 12,637 req/s | 7,571 req/s (⚡ 1.25x vs FastAPI) | 15,523 req/s | N/A |
Detailed report & reproducible scripts: performance-reports/rustapi_vs_fastapi_vs_nodejs.md
🏛️ The 3-Tier Execution Model
- Tier 1 (FastAPI Drop-in): Standard Python
@app.get(),async def, Pydantic models, and dependencies. - Tier 2 (Hybrid Rust Acceleration): Standard Python handlers utilizing native Rust power primitives (
db.query_json()SQLite/PostgreSQL streaming,rustapi.encode_jwt(),rustapi.hash_password(), MiniJinja templates). - Tier 3 (Pure Rust Native Fast-Path): Zero-GIL C-speed routes registered with
app.add_native_route("/health", ...)clocking 96,000+ req/sec at 0.57ms p95 latency.
🔄 Lifespan Context Manager (ML Models, DB Pools, Resource Cleanup)
RustAPI supports the modern FastAPI @asynccontextmanager lifespan protocol across both ASGI and native Tokio app.run():
from contextlib import asynccontextmanager
from rustapi import FastAPI
ml_models = {}
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup: Load ML model or connect to database before handling requests
print("Loading application resources...")
ml_models["hero_model"] = "Loaded Model Instance"
yield
# Shutdown: Clean up resources and release memory on server exit
print("Cleaning up resources...")
ml_models.clear()
app = FastAPI(lifespan=lifespan)
@app.get("/")
async def read_root():
return {"model": ml_models.get("hero_model")}
if __name__ == "__main__":
app.run(host="127.0.0.1", port=8000)
⚡ 5 Proven Ways to Maximize Performance
- Pre-load Heavy Resources in
lifespan: Load models and connection pools once during startup rather than in request handlers. - Zero-Copy SQL with
db.query_json(): Stream database query results directly to client sockets without allocating Python dictionary objects. - Declare
response_modelfor Compiled Serialization: RustAPI compiles PydanticTypeAdapterinstances once, boosting serialization by up to 64.5%. - Offload Health Checks to Tier 3 Native Routes: Use
app.add_native_route("/health", ...)for ultra-high-frequency endpoints (96,000+ req/s). - Scale Multi-Process Workers: Set
workers=os.cpu_count()inapp.run()for multi-core parallelism.
📚 Documentation Reference
Detailed documentation is available in the docs/ directory and project reference:
- 📖 Getting Started & Core Routing
- 🔒 Security, Authentication & JWT Guide
- 📚 Complete API & Migration Guide
🛠️ Local Development & Testing
Build from source with maturin:
# Clone the repository
git clone https://github.com/rajboopathiking/rustapi.git
cd rustapi
# Build release wheel with Maturin
pip install maturin
maturin develop --release
# Run full test suite
pytest tests/ -v
PYPI Package
pip install pyrustapi
📄 License
Distributed under the MIT License.
Metadata
Release files for pyrustapi 1.9.0b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyrustapi-1.9.0b2.tar.gz | 3.6 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyrustapi-1.9.0b2-cp38-abi3-macosx_10_12_x86_64.whl | CPython 3.8 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 7.8 MB
Release files / pyrustapi-1.9.0b2.tar.gz
| Download URL | pyrustapi-1.9.0b2.tar.gz |
|---|---|
| Size | 3.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99f3ee68359702bae3f57506d29f3717cc499b6cceefca7b118bdf7f1e7ec25a
|
|
BLAKE2b-256 checksum How to use checksums |
c1366e17b87c1d541d186d0860a786399f64e7bf2cee681a03969ec9c488ec1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / pyrustapi-1.9.0b2-cp38-abi3-macosx_10_12_x86_64.whl
| Download URL | pyrustapi-1.9.0b2-cp38-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.8 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
014a551c3ebcb6ec11303facefd830018fff0ad96b6a4ae71809efbec857cca9
|
|
BLAKE2b-256 checksum How to use checksums |
649b1c6964881a323f54ececac185e026e7b568c5735a8f0cc27dde10f993e9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Security for pyrustapi 1.9.0b2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.