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

Uploaded CPython 3.13Windows x86-64

ignyx-1.1.0-cp313-cp313-manylinux_2_34_x86_64.whl (917.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.1.0-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.0-cp312-cp312-win_amd64.whl (894.5 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.1.0-cp312-cp312-manylinux_2_34_x86_64.whl (917.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-1.1.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.0 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c4437caba9dd1200ab6e497841f2b7d6369dd83d6867965b693d633e1beb1576
MD5 e8dfc69546112766e9472f922d675cef
BLAKE2b-256 0cf01e737574a5cf4acf03e0eb69c893322c404802949a63a5994b843aff6ddf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cf6bf0cbfa4253473ff247ec00f6ad61c2009e97e9bbca4a5f5e2b2ad36728bc
MD5 b6b4e099338aaa54160a5843d71309fe
BLAKE2b-256 b7c23cf051bb6a87382317209aceac974813b67ce25f29a4a909ac2b2861416f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67a142da0aa9fa0d0ffbf90617fed97e8d8fe77610d0991822bbc8039f97b89e
MD5 ca338533134485ad86b5bb062d06ed82
BLAKE2b-256 9546e93262a1ef639d59a54855d854d05bde5c4d15cbb0c05042a5bb8675cb74

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.1.0-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.0-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.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 87378a11a541e36ff15ab5f38b95cc477b83605e5217d2c0370ed940cdf5fb17
MD5 6190f440fe41ed39c8aae4573e40c8e6
BLAKE2b-256 c9a0b06bbe14298a60d654456da03c0c2fdcbfc0081298351dcc2da76e2ef6ee

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 894.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.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a8afe200b09c4989004ba5a59d1cf66eecde8a7e0dd05307fd29cbd138a3662
MD5 8ec0900993c3d4a688258722546bca02
BLAKE2b-256 b8042e401c61475671535b7e7858cd033ebcb873dac5642246d2b91810fbd208

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3ebb553c4f7c5bb06884cda526a50e5c21d6c2c4d7390402938ceacd13fb8b7b
MD5 1b769446d1c3ea298b80b189ca0a78e5
BLAKE2b-256 6e8604cb927511dd1c2b9da1f1e5572284ede2c1c48befd693ac5a1888150c3f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bdc86d0a1b013ae44daa3eb2ef718c7c6bb88408c8ffee23a9888bd3307f838a
MD5 5e654cbdcfef7a0e9c901c6c3a35d210
BLAKE2b-256 35d389c30be92f106d6b897355ec80b79f7bf4aa4df0b11bd4328d832dbfdce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.1.0-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.0-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.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 09c61f2781b2af92c823a7064726989cf59e3769576175ea55051a93127cf25d
MD5 6525f8552b87a93fe9dfc88aa98596d6
BLAKE2b-256 e9220665d56755531b618ec01958997c355d625c7c89a408898695a25d3efcae

See more details on using hashes here.

Provenance

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