Skip to main content

Rust-powered Python web framework — 10x faster than FastAPI

Project description

Ignyx Logo
Ignite your API. Built in Rust, runs in Python.

PyPI version Downloads CI status Python versions License Docs

Description

Ignyx is a next-generation Python web framework engineered for maximum throughput, utilizing a Rust-powered HTTP core built on Hyper and Tokio. It provides a familiar, FastAPI-like decorator syntax, allowing developers to build high-performance APIs with zero learning curve. In honest benchmarks, Ignyx operates 8-9x faster than standard Python async frameworks. It integrates seamlessly with the modern Python ecosystem, featuring full async/await capability, Pydantic v2 validation, WebSockets, and dependency injection.

Features

  • Blazing fast (8-9x FastAPI)
  • Owns full HTTP pipeline — no ASGI overhead
  • Native async/await support
  • Pydantic v2 validation
  • Dependency injection (Depends pattern)
  • WebSocket support
  • Modular routing with Router + prefix
  • py.typed for full IDE autocompletion

Benchmark

Apple M2, wrk -t4 -c100 -d10s

Endpoint Ignyx FastAPI Speedup
/plaintext 53,886 req/s 6,193 req/s 🔥 8.70x
/users/{id} 48,988 req/s 5,597 req/s 🔥 8.75x
/users (POST JSON) 44,178 req/s 5,200 req/s 🔥 8.49x

Note: FastAPI tested with Uvicorn single worker — standard config.

Installation

pip install ignyx

Or with uv:

uv add ignyx

Quickstart

from ignyx import Ignyx

app = Ignyx()

@app.get("/")
async def root(request):
    return {"message": "Hello from Ignyx!"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

Feature Examples

Pydantic Validation
from ignyx import Ignyx
from pydantic import BaseModel, ValidationError

app = Ignyx()

class User(BaseModel):
    name: str
    age: int

@app.post("/users")
async def create_user(request):
    try:
        user = User(**request.json())
        return {"status": "success", "data": user.model_dump()}
    except ValidationError as e:
        return {"error": e.errors()}, 400
Path + Query Parameters
from ignyx import Ignyx

app = Ignyx()

@app.get("/users/{id}")
async def get_user(request, id: int):
    format_type = request.query.get("format", "json")
    return {"id": id, "format": format_type}
Dependency Injection
from ignyx import Ignyx, Depends

app = Ignyx()

def get_token(request):
    auth_header = request.headers.get("Authorization")
    if auth_header and auth_header.startswith("Bearer "):
        return auth_header.split(" ")[1]
    return None

@app.get("/secure")
async def secure_route(request, token=Depends(get_token)):
    if not token:
        return {"error": "Unauthorized"}, 401
    return {"message": "Access granted", "token": token}
Middleware
from ignyx import Ignyx

app = Ignyx()

@app.middleware
async def cors_middleware(request, call_next):
    response = await call_next(request)
    response.headers["Access-Control-Allow-Origin"] = "*"
    return response
WebSockets
from ignyx import Ignyx

app = Ignyx()

@app.websocket("/echo")
async def echo_server(ws):
    await ws.accept()
    while True:
        data = await ws.receive_text()
        if data == "close":
            break
        await ws.send_text(f"Echo: {data}")
Modular Routing
from ignyx import Ignyx, Router

app = Ignyx()
api_router = Router(prefix="/api/v1")

@api_router.get("/status")
async def status(request):
    return {"status": "operational"}

app.include_router(api_router)

Comparison vs FastAPI

Feature Ignyx FastAPI
Pydantic v2 validation
Async/Await
Dependency Injection
WebSockets
Modular Routers
Performance (req/s) ~50k ~6k
ASGI overhead ❌ None ✅ Yes
TestClient ⚠️ WIP
Static file serving ⚠️ WIP
Lifespan events ⚠️ WIP
Exception handlers

Current Limitations

  • No TestClient yet (use httpx directly against a running server for now)
  • No static file serving via app.mount() yet
  • No lifespan events (startup/shutdown) yet
  • Hot reloading not yet implemented
  • OpenAPI schema is basic (no Pydantic response schemas yet)

These are all on the roadmap and will ship in upcoming releases.

Contributing

We welcome contributions! Please see our Contributing Guide for details on how to set up your development environment.

Deployment Note

Ignyx manages its own Tokio runtime. No Uvicorn or Gunicorn needed. Just python app.py.

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ignyx-1.0.6-cp313-cp313-win_amd64.whl (874.3 kB view details)

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.6-cp313-cp313-manylinux_2_34_x86_64.whl (903.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (872.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

ignyx-1.0.6-cp312-cp312-win_amd64.whl (874.6 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.6-cp312-cp312-manylinux_2_34_x86_64.whl (903.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-1.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (873.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-1.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file ignyx-1.0.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 874.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ignyx-1.0.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 472a1269e6690af2ea5e15dfa58a8902188bc0c00f9df15ccd3b686bf0ad6666
MD5 f8999a1791047e6faab50b2cae8179a7
BLAKE2b-256 528f9a8e35e749555542072c6f25a6275fb500ebc448a595ff687db058d1cfa9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp313-cp313-win_amd64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d230cb59756dbc6903ab640f0b64effddea95374061c90eb60b7b371b30f8250
MD5 ece571e50b1197ca7dd56368ea261c22
BLAKE2b-256 2305e4ca297f0d2499feb7ccf2d6e27b3ccb49cfdd44316c9ef8b2a805a5b29a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c9d9fcbf10b8e3f15fbb06440acad8c761c9e0172f41b644906f87f86293ac7d
MD5 166375c4c28f2d7db1a2a78644d32c85
BLAKE2b-256 b95075417340a6e742d4d82e40f2fd068e3c9cf44bfe383673c9dbc19e8630bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d4db70017eba551565757b7e886977a3054a1b5fc22eaf6e4c5540d7a7385e83
MD5 6b31b9311c91f4f6ec41b49cdcc59b40
BLAKE2b-256 c6cfbea5b813dfa3a5a191752b91f85d621b5b2a40fee6187456e9d505fa8124

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 874.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ignyx-1.0.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d41b2ae5f539268f3123ad93be58e4a6f9670034372ae48a3755cb59cc655a8d
MD5 37a7f5062f615713a11f9ca48e7114ec
BLAKE2b-256 96d3aa3851d40f537af159589ad69e5ea2f619f5ab8902dffd1df2a9daee787b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp312-cp312-win_amd64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cc9e09812fa81ef5dfcc1184225baff276671fae4e69bdac546528fb383e2bce
MD5 1ae2a804d7efa428af0ab677d5789713
BLAKE2b-256 e7f071904b27a7320cf4d7f05ad282de467bb2900f7956af99afc2456ee41273

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f98b46c0133afc914f2306ae03a70588dd5f86ce462371bfcc028afa28f87fd
MD5 3d52508808f3c99d853adbe5285a8076
BLAKE2b-256 f77cafe7ef67ca3fd1277b85274295fe0d82beac92cc27d51a6aed90aef2cec9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignyx-1.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ignyx-1.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 df847caf7120ac3e8f8838b3e4e04456ed202ac83267d15328b37b4b44e71fa0
MD5 ec1fc60827c25aa27400b60418c0fa15
BLAKE2b-256 f53f4e6d531334a8c07d0856ea2fe2f9437b02e8cf0f75ddd6f6205f84a09742

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on sakethdevx/ignyx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page