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.

GitHub Release Build Status Supported Python versions License


Ignyx is an insanely fast, concurrent, and robust asynchronous web framework for Python. Under the hood, it drops down into a highly optimized, multi-threaded Rust Core via PyO3, completely sidestepping Python's Global Interpreter Lock (GIL) bottleneck during high-throughput network event loops.

If you love the Developer Experience (DX) of FastAPI, but need the raw multi-core scaling infrastructure of Go or Rust, Ignyx is for you.

✨ Features

  • Blazing Fast: See the Benchmark — up to 8.7x faster than FastAPI for raw JSON serialization and dynamic routing.
  • Fearless Concurrency: Network I/O, parsing, and connection pooling are handled concurrently in Rust thread pools before ever touching Python.
  • Native Async/Await: 100% standard Python async def and await compatibility.
  • Pydantic Validation: Ships out-of-the-box with pydantic>=2.0 schema validation logic for fast, strict JSON enforcement.
  • Deeply Typed: Complete generic typing inference and py.typed compliance out of the box for perfect IDE autocompletion.
  • Routers: Full support for modular, FastAPI-style hierarchical Router objects.

📦 Installation

Requirements: Python 3.12+

pip install ignyx

🛠️ Quickstart

Let's build a simple, screaming-fast JSON API:

from ignyx import Ignyx

app = Ignyx()

@app.get("/")
async def root():
    return {"message": "Hello from Rust-powered Python!"}

if __name__ == "__main__":
    # Spins up the optimized Rust HTTP listener
    app.run(host="0.0.0.0", port=8000)

🚀 Advanced Modular Example

Ignyx scales beautifully to enterprise API patterns. Just like mature frameworks, it supports nested routers, request unpacking, and typed response overrides.

from ignyx import Ignyx, Router, JSONResponse

app = Ignyx()
users_router = Router(prefix="/users")

# Simulated async database fetch
async def fake_db_lookup(user_id: str):
    return {"id": user_id, "name": "Saketh", "role": "admin"}

@users_router.get("/{user_id}")
async def get_user_profile(user_id: str):
    data = await fake_db_lookup(user_id)
    # Return explicit JSONResponses or standard Python dictionaries
    if not data:
        return JSONResponse({"error": "User not found!"}, status_code=404)
        
    return JSONResponse(data)

# Include the modular router into the core app
app.include_router(users_router)

if __name__ == "__main__":
    app.run(workers=4)

⚡️ The Benchmark: 8.7x Faster than FastAPI

Why is it so fast? When an HTTP request comes in, a hyper-backed Rust server engine accepts the connection, parses the packets, strips the headers, and prepares the asynchronous payload across isolated worker threads before the Python GIL wakes up. You only pay for Python execution exactly when you need business logic.

Tested on MacBook Air M2 (native ARM64). Both frameworks configured identically (CORS + Pydantic + dynamic routing).

Endpoint Ignyx (Rust Engine) FastAPI (Uvicorn) Speedup Latency
/plaintext 53,886 req/s 6,193 req/s 🔥 8.70x 2.22ms
/users/{id} 48,988 req/s 5,597 req/s 🔥 8.75x 2.39ms
/users (JSON) 44,178 req/s 5,200 req/s 🔥 8.49x 2.61ms

(Tool: wrk -t4 -c100 -d10s)

🤝 Contributing

Want to make the fastest Python framework even faster? Contributions to both the Python wrapper and the core Rust HTTP engine are highly welcome!

Setting up the Dev Environment: Because the core is Rust, you'll need maturin.

# 1. Clone the repository
git clone https://github.com/sakethdevx/ignyx.git
cd ignyx

# 2. Create a virtual environment
python -m venv venv
source venv/bin/activate

# 3. Install dependencies and compile the Rust extensions dynamically
pip install -r requirements.txt
pip install maturin
maturin develop  # Installs the local Rust code dynamically as `ignyx._core`

# 4. Run the Python tests
pytest tests/

📜 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.3-cp313-cp313-win_amd64.whl (862.8 kB view details)

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.3-cp313-cp313-manylinux_2_34_x86_64.whl (892.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.0.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.0.3-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.3-cp312-cp312-win_amd64.whl (863.4 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.3-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.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-1.0.3-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.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 862.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-1.0.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed1d100b37890caab221b652d5885bdaa71f5e1e27488557576324eb321eaca4
MD5 ae7c03ee1ae12dbfead7a788421c46df
BLAKE2b-256 02704655b0013ffa9cccc87e6517764b42c0050fed75e521af40f35d78d58ab9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.3-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 64ac559388c834eb79742071393b5b510f387a351e29c25a050e29ed4a2d848f
MD5 87ff0fb9f29309091ea66c3b5ce76341
BLAKE2b-256 580860621cf762aa6a179c6b9ca5636df582ef8b875e9b7a2deef7aae596859c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 50f512bafa5aee91d97a212beafefdbe418a4c28d2ef2c206224c4d216b9fd23
MD5 a2c56d8640b01c46d923b11f92cfc0d7
BLAKE2b-256 8ed06a2b72d14d9fce090734aaa263d10fd25191effa4c929ebceead3c654062

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.3-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.3-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.3-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 7dae7a7f36c86316678f06425e567122099e424fa8e35431aad15e451278b0d6
MD5 2cb1bb27a70022d81c7e8885a2a9be5c
BLAKE2b-256 8131281b73c1ae86462dca75c92e7aebe869442b98403e2d1ce6ff6507cac428

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 863.4 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 09006c1eec0c87937c7aa7748d21d244269285bb71b8e05aa0101a9c808cf428
MD5 1b740c240ff62f937b348824aa430c81
BLAKE2b-256 863980848fdc120f938be755b19e1b7314c1a0cde869dc37e8fcfbc11e8d2c7f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.3-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9e8bb6488e716181abbb01ff2ea1991ebcfc71c296e3072b93b773acc995785b
MD5 4a26fe51453b7027bb5228128d210320
BLAKE2b-256 7f420bf07116ebf7eb2e297346b39ba537b59121f12847c0772dec5527503d05

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f686e3c43cb3ba4135272a8fbd33efe3c002384c400a9fc72556650c72a7a6b
MD5 db519ab2b69779bed7f3f5c20d9b37ef
BLAKE2b-256 41cdb0b5b50fb92c4db08f3de50ce26081c6766fb68249181e67a8272f591441

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.3-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.3-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.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 6e2e47ad7edfeb9c5d014f4879f734f882be576b75acd0b9eaf62b0c0aaf28e9
MD5 547570c772d140cc7c88c820b392b813
BLAKE2b-256 f4eee2b0a5b30c49329cdfd491e038e8e38de3ce3868dfc9b6e1595beff20366

See more details on using hashes here.

Provenance

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