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

Uploaded CPython 3.13Windows x86-64

ignyx-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl (917.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-2.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-2.1.1-cp312-cp312-win_amd64.whl (894.3 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl (918.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

File metadata

  • Download URL: ignyx-2.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 893.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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 13d3c7fd7c93c95e65cc07aa4f305f9d3968197c5b8dd75c523db2bcc8ca9fb1
MD5 7c9f263bee0c64636688dcce50e7396a
BLAKE2b-256 4a56fff66c38b3f4d4c77bf49f2641abca912afbbd704d74011568cc1cf67621

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7541287932944cfcd526ba12759e9fc8265afbc0ebbe068fb986269c617053ff
MD5 1404e07ccdaef839e4c04b21c5071dcc
BLAKE2b-256 2db179f3f4d506f734450584dcb931495bf80e0a4ec49a95c716114ebf027dd5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3bf5bb67101cb23acf5fe0d5c341e3d88cec34ee915a683f9e1cfe29838789e7
MD5 131c0366d504132e42401897492e8efd
BLAKE2b-256 9a7ce1123e5c5727d6042a909a47dd9cf1acf8a5c837d73795fcba869076b5bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.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-2.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-2.1.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 4609c045787714185a14f6d26a1a9a1e81fa002a11a82c2d44581892d3d2a817
MD5 d3988511cafab1ecc7aac7cd491218d0
BLAKE2b-256 c91ce9932898961dfacebd5c8d3b783b6fb6c2db3239530b6530ed785312709e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-2.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 894.3 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fffe82ee463d8ca34588fa019b977b60fb219912c3c5d3bee91ad620dbd43f01
MD5 257ba7a8d1bbeb1cba903f142e6e69ea
BLAKE2b-256 de296638da556d249c710af6c7b45c6b2ec8966bbb9567ed4297ec69525cc723

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 150668ea77951bc211171896c9a5565fd20e9e6094bb7d9bbe69d18e5675ad19
MD5 3ced967634a7005eda46b5b3b05ff870
BLAKE2b-256 57c99de426bbf9050be4bdeb3f523e43dcc41126b0154d50b1ff044cd310b2b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc44e7969436961907a2003bf656d1a2694720e2d759256500298163021cc441
MD5 e6cbd4c6a13652a3a9f73d62046e896c
BLAKE2b-256 ea45d6569915bdb4c735cda51ccb78ea41d1e457e82f5eb0e1dd22b5ce20548d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.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-2.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-2.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 a545d03e1a8a638c7cea32f61b4ce3d15648f628a593d072c9da541df262b6b4
MD5 30554d5578f6586dc4edd5ac7e40710b
BLAKE2b-256 6bafe499c46e118cfd43f368589040a7370a0c0d3da374b1505e410dd3bc4d06

See more details on using hashes here.

Provenance

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