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

Uploaded CPython 3.13Windows x86-64

ignyx-2.0.0-cp313-cp313-manylinux_2_34_x86_64.whl (892.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-2.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

ignyx-2.0.0-cp312-cp312-win_amd64.whl (863.5 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-2.0.0-cp312-cp312-manylinux_2_34_x86_64.whl (893.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-2.0.0-cp312-cp312-macosx_11_0_arm64.whl (828.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ignyx-2.0.0-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-2.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5d2adfcb304eafc956956f4163e4c4b0ab6ea4dca678c9b6b88a945fa2f14303
MD5 cb511ad0e1b2be23ec39bd2237b59c03
BLAKE2b-256 21f5ad9e1fc764c61b85196678857cba597a302b87d46304954e06945ef1844e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8c73ed4490a2621c7fd5ff9dd4bde609b89ae5657d926efe33982f375a3cc496
MD5 b99e36efae62a14eb32754ecd7f4a32c
BLAKE2b-256 1e92e25932f0fca2808fb9a9de3b69406ac091c1cace8b93eed7d4af2ec0f254

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b6c03da0083a27167d77267146df22eac7b263057c0b7d930c48995795d1dd48
MD5 a55e2f0e70e65ccbb6c4768b858589c9
BLAKE2b-256 29b17fd1f968884ac0b68d9d6c7b052c77ca5ebf9c42f270bc58335ae6e94aa2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d4b5c647f50359ccc7fc7b4f230cf9992133487b7990b16791afb1090f356fe
MD5 01ae1a76d72e97b5e05d40a1258f584a
BLAKE2b-256 67ce3db27f1e6234cf34f6417cf353903f08516e9f3afcc8edb745a40652e2e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-2.0.0-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-2.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 213dfdde4e264945a8f779551c9cd57bc9347486a972961969e698a9e9fa4206
MD5 c6e98a9fc5067c246bc58f675fba7b01
BLAKE2b-256 ea0917ff9ab27e24a3fcfb1ef8857ef55f14109995bfe7eabeeed78e19391450

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ff246c9c94b1012e784af7a119305642263e820dba4b5f6e5c5d8ced6ed7ff48
MD5 dc390381b8f86fb0f7475d9db05b62ed
BLAKE2b-256 b7d7a976f7175efdf17f98c42b1a66032270fb79b2817724d8992031d4ba5188

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8ef880ef5fecddb441cfc93146cc61968fd72193e56eb1c53dc03eb1866381de
MD5 d8babe67becc2218ba6d6f4a762026bf
BLAKE2b-256 ec47153020bed3a3e7522dd9374e43c5439cc87b7696e48032e71128cd21cecb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4018fe415a848eaf9c61d1ea1458a43530e623e3a45a95f88fe99eec9abebdbe
MD5 b857896df8e58742ad72d68106a0c8aa
BLAKE2b-256 46ab384bdac5d54f631e9c7c155a2bb015a25f6140ab60eddacf710355d143a9

See more details on using hashes here.

Provenance

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