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

Uploaded CPython 3.13Windows x86-64

ignyx-2.1.2-cp313-cp313-manylinux_2_34_x86_64.whl (918.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12Windows x86-64

ignyx-2.1.2-cp312-cp312-manylinux_2_34_x86_64.whl (919.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

File metadata

  • Download URL: ignyx-2.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 895.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-2.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a0e8f8c0dd956b6266906dcf522bacd19236e0394aa82b3a379a76ad9ba5c3ae
MD5 5a00d256b335617deabed1ee1a4aadbb
BLAKE2b-256 1918c6b7a73b85bf1764e23173b0dd4d91e35746217844284491ce93dc8b7096

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 eedd049aad31c505852d4b0bf8663e7f9c8a6d97052f4285913fd6276d076bca
MD5 dbe2eedeb4e49409a2a15058a60c1a5c
BLAKE2b-256 ff71ae5176e46f81c674cf72673be8cc73983414ac79f78012ff1065eb91a68c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4bc57300fa52aec69b0488ef5b9e5bd4ab49ec35732cd3a8c08f322b5161c579
MD5 2059d9fa78be88635aa3be8932f72172
BLAKE2b-256 4d61d4606d59e428e68ae7574f6a3c1e0f4c7c3cce853b91e5d9cb23384834b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.2-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.2-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.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ff59f0b54fe919d8e7f1d1057b98237bd4c52cc4c882c6ab892b946d096187e4
MD5 7c554dfaef003cb2b2de22ca404c2346
BLAKE2b-256 640a729313a971e1503a3b84cc1c9536244d913189135040d71a1dc98729bc45

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-2.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 896.0 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0ad2f673e33ce1238f03075fe238a998fb666aedf47979b33ced283c8f6d98fd
MD5 42cc442959871faa578c348243b7b0cc
BLAKE2b-256 3878b8c52a127e95b7155ac9282e90ba0a522da483c51ae0b8a52059e25d41e0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4cc9562b8ed578e367306ae5d34c66d2cf48be284437732fbafe8c89eddffff3
MD5 ad1f4f0d33e2be1292182ad74416c0a7
BLAKE2b-256 9d09ea061313db98e4da7eedfcedbb8d18ce9fad9124d9344a37efe164ae1768

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0beab45e7b7417b73298b6f64dd8ab8e57dc77cd861afc240b5eadb062bc6e43
MD5 31df8800af1a059343f6b7e26c4ac654
BLAKE2b-256 9d4a47a2188432de924e7d9949b7288cb82b8136b250fce5b2980214fd615c60

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-2.1.2-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.2-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.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 66cbe0cfb733d59bc8c740f9cdf7f15f27af09ecc2c82681867d48f00ee21579
MD5 714d93107877c0ee905880849916b735
BLAKE2b-256 05dc965e57b77624b6e0869302fc7a8c5527226100078424a9546cd5905fc91d

See more details on using hashes here.

Provenance

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