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
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-1.1.1-cp313-cp313-win_amd64.whl (894.5 kB view details)

Uploaded CPython 3.13Windows x86-64

ignyx-1.1.1-cp313-cp313-manylinux_2_34_x86_64.whl (917.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.1.1-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.1.1-cp312-cp312-win_amd64.whl (895.2 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.1.1-cp312-cp312-manylinux_2_34_x86_64.whl (918.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

File metadata

  • Download URL: ignyx-1.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.5 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.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e57b731ad4dff12e4a31f3793d6e02f332f5789b6589e905a06649dfd736d64a
MD5 4b8691711e63021675b1ccdbe00e469e
BLAKE2b-256 7fb9c0f33d8a0e955de6e26bc360c34eded06bf775cc41b2cd118b077b30576d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 faeb808c31d4e562e7d70314cfaf79a4c78b41ee59d6018e2bf26adee04d8913
MD5 f15d6d0d0c43f7d8d72d92b61c172f3b
BLAKE2b-256 6c08b67dd7f35b2d517f3f861de110ccd15f9055f2f3b225800c015fd0fdcbb3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ac194d9849201d6c2bc2f1232104e6eeac81fdef33be46a740230c395e263c5
MD5 2618ad2f0fffc9a837a98cf338e25ec3
BLAKE2b-256 5cfc6e1fcc2e0215829458d9f53a90600ff66c386db28edca4b38f4750df1cfb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 4edcebe9f5bf019a977e3c8934348f5686230a879d40edebe751e06ba175bf7a
MD5 2303e38ffffb378060c687a7e149527a
BLAKE2b-256 24b22a2440304ee5164692d199a8295a34dec5918a0385b76126b86833441374

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 895.2 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.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2a8017866861ab0ab5927dd9084da5229512c33a555b41f0f7dc747136d9f988
MD5 f5eb3d2c8842e6f66624146a329d6476
BLAKE2b-256 09bdaa7a884180002fd9a4c3620530f3e170710f812fac48961bb2961b19f951

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bd76df2ea1d6ea76b2fc854f2e5245b234892c67d03195a828b944490db654bb
MD5 cd3fe608e8b64afc02dfce9b7b11c18a
BLAKE2b-256 11f853ef0bf7820b8965922a36c5904e747de20b05e55b1e5b601c31a11d67ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9fbacda8417541a07ef25d60d9395c1173e4190da73272722e23f490e953b227
MD5 0f283ef72097d55c764e89c99910eb82
BLAKE2b-256 8de5481f518bec54ca6c73e3d0b56be9439e25cb0d461359dfe71b40bbdc711b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 32383ca31ef2d84ae752e326c38e98ad45d04f23f9a6f9a11cda03e3f6e1270e
MD5 a474300b4f695345c09d7f6d7edf287e
BLAKE2b-256 ad2481e03ff83461acdbc20da1657e18ea2459edfabebf70e1204040d82efd2f

See more details on using hashes here.

Provenance

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