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

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.5-cp313-cp313-manylinux_2_34_x86_64.whl (892.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.0.5-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.5-cp312-cp312-win_amd64.whl (863.5 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.5-cp312-cp312-manylinux_2_34_x86_64.whl (892.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

File metadata

  • Download URL: ignyx-1.0.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 862.9 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 70b6c9f7186306ee5ceebf5ae64179b071fe09ef970e7bd3df89f28e3ae4db3c
MD5 a7349eb309afd159c17e2e2ae3ad2f95
BLAKE2b-256 a3c2c02efbcd09baaf1a7e3777d877dffd0298c253c728037dd41df79e81364e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.5-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8f3303cd19110b3c57259419fdea4dcec45aa928223b81c01516f6c443da1848
MD5 e6155f25f41be469a237b9902260b4c0
BLAKE2b-256 f94e68ff0460b4d8f461256d308ddbfeec00d48206e0013657409768c60c1ebe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 352b00a014f69ca7eb09bf5bea9ad03c14498da1a5997340efcc00a1c3490d4c
MD5 3c62110c93ddb61b4ce1bb6fc4a5b780
BLAKE2b-256 17d3e957f6a2a2b5885790965770313955155fef98c9dcf65d4bf1809a00e8fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.5-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.5-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.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 bc2d6d68b04265b59b6f87367b9e778b458542263688c04fc3e35f034d850b62
MD5 73c657a2e165b5c75beef78dde5f705b
BLAKE2b-256 46f9855f84e70196425e855bb7a803e3e208ccd9a0042046a4efaf8f0fa086d4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 863.5 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0cca1e8e9323b49ef464894e13514ba8612853466fbc116b12aba5d2c47beae1
MD5 bbb63ca2a4cf49cbe2c88297594f5db3
BLAKE2b-256 8a0a4c8a463dfc035326d22cbb32d4f9d8032197b6861eec0d541bde41c55523

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.5-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e2e0f91894f954e114d1eca43451170ba4b9c3c596df78e93dca879bae0de668
MD5 1f0c7d91e01dadcc2fa7f43edd295230
BLAKE2b-256 cecf3b85940cd13422710da8a738940b0e237018195e0ab5ea65ca1b0e4f7883

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d95a9dfa4db451bb29ce94bbe8fcd2be89f3f2c4f6b9e5b109896fc31c23fcd
MD5 8defca9dea1d5db554669bb3e38b380f
BLAKE2b-256 a76e95531eb514722de91a7fc11a5e2dac5a0f4c27f607318a434f1b805acba5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.5-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.5-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.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 738d92e59990d217fe12bb20a2c88d9d9dc23138de8d698722efd5d57204e934
MD5 2f2795234b341a5b7851d26de9b47286
BLAKE2b-256 a104f7101766023d3b92f393ce6312bbf1080b04ff215eb0960ab25b37cca5a1

See more details on using hashes here.

Provenance

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