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

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

Uploaded CPython 3.13Windows x86-64

ignyx-1.1.2-cp313-cp313-manylinux_2_34_x86_64.whl (917.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.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-1.1.2-cp312-cp312-win_amd64.whl (894.6 kB view details)

Uploaded CPython 3.12Windows x86-64

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

File metadata

  • Download URL: ignyx-1.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.1 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0d39adfa0b470102f5037dbaf80ad9a4cba8a621f3047f214575e21374158a85
MD5 e6a8c4439b5332f4edcf7de478b28f57
BLAKE2b-256 207f30ad9522833bf13496752fddbf5a5a2945105431aaccc5912f2b90558f41

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0823ac4d1b89c3409879caa9cfc0284be14a245bd512f72f0db9f22e987cd46e
MD5 73ecce565ac1ee25431c19e97d09d9df
BLAKE2b-256 e444f1664090be3813e9731cc3343274be59c377e96237f9b77184391d58c71e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b3b66d0a8f88e4be6baf22a101f48950988a5dd842952619bba30238aba7b5ad
MD5 c2813d4d57d1146159bf0edd6ca715e9
BLAKE2b-256 a50711305c88dd814d20165c7fa0d9ffe7db5b88ca8c925619c6cb9d8bf341f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.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-1.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-1.1.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 6bbf49b7019dd2631034f572e726d0bc47db286ab3cea6f74b3f04458ecdb224
MD5 9b7b97da1024a5ec51c44e2f597f8e8f
BLAKE2b-256 89885b132d6aae18879f4379ea0cb3c3b559d7680cdc1b35fdba580d1dff2d20

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 894.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-1.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 97a972bd50b68f9515dfa55afff0cb19cc4ffdd8a3434517b27791c9fb767b51
MD5 3384d782b809a9b6c2a16d275c0b2141
BLAKE2b-256 2732c006d511711bd44d62be722e9f932b42743855b4bf531f79ce805ebbf03d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 783a45311058ea31a5be860a619566a7b0f37703a710fddc7c2b7cda52921795
MD5 18fff20874e671a5e62823f7df5f3c17
BLAKE2b-256 b317a27e7b18d201501d46a5f81ec31fdaa8c0ada7619dfe4e5f4a5f895ecdea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 daaece3c0de1dd52af898fe556975f667a64edd5269654b1bc6395746b64d176
MD5 69ef38dd077a3242718de7db34fb9bef
BLAKE2b-256 da7e66b4d65ac54beb83bf5b1145b9b8d41c7028d521e40bba603274d252db3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.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-1.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-1.1.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 21f039ecbd177c7979f24b2fab523c0a60196b9fc9f262a9cd6c3fe5a6107337
MD5 4d0663ccd9933e3aa823f0cd9b6b34bf
BLAKE2b-256 e87ed876861c3fb0583aeb3bdf4910667c5329de7328eb336d7a4800c3fbc3f3

See more details on using hashes here.

Provenance

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