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==2.1.0

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
Static file serving
Lifespan events
Exception handlers

Current Limitations

  • 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-2.1.0-cp313-cp313-win_amd64.whl (894.8 kB view details)

Uploaded CPython 3.13Windows x86-64

ignyx-2.1.0-cp313-cp313-manylinux_2_34_x86_64.whl (918.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-2.1.0-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-2.1.0-cp312-cp312-win_amd64.whl (895.6 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-2.1.0-cp312-cp312-manylinux_2_34_x86_64.whl (918.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-2.1.0-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-2.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-2.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.8 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-2.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c9681cc9957e8ea8d29bd6654a07045813a9a711e7806fd66c94443d54d1ee26
MD5 4bf8cb1707abeb01d20308fa99b7df56
BLAKE2b-256 c0cdd95a485b169f5af3897c6bad01f273355f9897444f74a998f8a201e32123

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 acc5042b2e8a961b397b62ed208cd91188ecc39f4dcecb6ad36a6ac01f9334db
MD5 578df34dc7fb4ae7f8ee8e73cd613d09
BLAKE2b-256 737d8681acfc10c529b815fd71f46ee618aa65a60e88ce45e2d74236cc4f8c4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9d891e8b1a3591becdf9ecf244a8f3a04e077c60fcb8b8a0d6be2984b555f421
MD5 db7dd6a99a5438d4e69acbb930a0b4c0
BLAKE2b-256 be2853cfb1aa7230febd577e71daa5efee921f3846491eaa21659cfb7ae2ff6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b697d75c1f6c15e2c2a53423a7902d552e691425e9c3acb16adca8c4aa5726e7
MD5 e86f3cba35fe435aa1332ef0af9a3744
BLAKE2b-256 8c33c3c553b13a504e9f650a58f50b3eeda0ab305ae8205d749f9ede32620964

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ignyx-2.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 895.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-2.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 16183cb1cf7226558b93d4d968576241ec3d20d16f490f171237676f2f90cc92
MD5 ee09d29fadb3f9cbaaaff916453cc053
BLAKE2b-256 6bd198f8635c8cc501a00a7edcdb9f0aa4bd292fffe07cf5e671717a4f120ed0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 94b2792001ccb58e1a55d3a3ebcb946b4188c8d2aa8a72e1dfd73576c5b19327
MD5 057d23d457b1d0576254e8be5a187428
BLAKE2b-256 6a96441124aad0aa094e21026f748f9b407067ddf2ee1ed871e65613863874d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d9b7e4cf5834978f2080db73d88bc60586a5d12b004f981231d28e10436a9d7
MD5 485ad6ef092737fe5c48890ef6e52863
BLAKE2b-256 084abfc15a4d6b45e9eced4ee5920564ae384eadb28241cd88d620cf4ab13caa

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ignyx-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 c89507dbf3b8eef45c6db1749251568ea59debe5addbefa5cc9a16f55bf8093b
MD5 74e91c9782b90c2eae11ca2c0132520d
BLAKE2b-256 619c42a47e7b45b45c6dcec6f467d032b496d0c26fd7c4bf66699a66e1199e75

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.0-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