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

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.1-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.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.0.1-cp313-cp313-macosx_11_0_arm64.whl (828.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ignyx-1.0.1-cp312-cp312-win_amd64.whl (863.6 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.1-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.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (863.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-1.0.1-cp312-cp312-macosx_11_0_arm64.whl (828.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file ignyx-1.0.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cb10e794a2d4eacf4765cc7c9d7e0d89d3ccf8e3aa9a8bdca35503c7e99377ad
MD5 6267195e9c7698435af2282db9cf6d7f
BLAKE2b-256 788cfdcba5ff683b1352d21edda39338878d8229b38a08562d8dd21c8c4b4cac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fae3141c3d5775807e4075ebdda58dcbbf75cf3d4a1dc426459111ad55256f40
MD5 f97f0062f75543b666e30930c9323b4c
BLAKE2b-256 0af3b5bc9c63db1ac8ed640958663517dba34f2436be1d062bcf7b48a4ee2a6c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 06a1fe33de3a554c24c59396e6123e319addccce21eac418f0487ea6ed197336
MD5 113903b29bb5afe9279a406f419a0c74
BLAKE2b-256 858aae9de3e7407b791bd97260dc41d5fe0b03064de4bd5ae8b292337de3149d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a580e3c61284b5d1888e5b964e92c40d05692c9d142bb94b6a19e03c7bcc3c6
MD5 d4d82111182b99124fd2f31a20fd8e0b
BLAKE2b-256 a88faa9cc67597543c2dea20dee37dfda7ccc8d2516d292b30f8fa22f425f1f5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 863.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.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 77f673d7c05819b1645eba62efe3171a713d262b4c705c0160de8ef22b9bb978
MD5 33e75e81485036db95d0ea1ac65747c8
BLAKE2b-256 329a9101242e328bee5dd514758fcbba75ffe578a0d95574ae4fa14d2111332f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3faba082de3d546a516ca51965a84657011929f7ce0ee84a5b0653b173902f29
MD5 efce1bd038040a74ea55320787b09a95
BLAKE2b-256 841331702d3224401ecec845908b67eb4ce254fe75a6524eae3ce778b3c58f29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 66a15790e3e907c43780974567cd809e381dc5f602078e30aad2760f17a4d86f
MD5 d02a673eefd85972edd395742fbd69e7
BLAKE2b-256 d5e7343dec6123ff7ce056f8150950cc303406f890aca811ebf4a58e7ffd69c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fd0b59c77e779c66292bacfa64d4626b66f8c7df4040551d66fc96d2fb7552a
MD5 7ff0ba5ff0ef50e07c1144087cc88470
BLAKE2b-256 a6374dcb3ad102b7cf8582da3e92993be4dbf5c0937eff9d7151fa1ac9b0e8b6

See more details on using hashes here.

Provenance

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