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

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.0-cp313-cp313-manylinux_2_34_x86_64.whl (892.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ignyx-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (828.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ignyx-1.0.0-cp312-cp312-win_amd64.whl (863.4 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.0-cp312-cp312-manylinux_2_34_x86_64.whl (893.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ignyx-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (862.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ignyx-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (828.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ignyx-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 862.7 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 89541fc436c6255323600aee1442c71eaefee671eab4a7d90cb966676c891822
MD5 7cdc43977f6458dc7d98614568ff4c0b
BLAKE2b-256 292ccb598cc51412ee6164ed961a4a3c899698b9502fc8c9f0987c372215fa72

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 302a4876cf70eef4dee4b4018a7cbe8096da73d93ea3f5cb3ca0374f2782dc8a
MD5 773d6cdca6cd06d62c797778472e3ecc
BLAKE2b-256 5a1377632b5efb3bae9ea0881e68c94213e268fb616f8bbd09232c20137c991e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b88385ffa8e18d4c843c8de88737696ab64a9f9d155982dd9d59571adc7025f
MD5 3322c96fb6d50719e91616ea6ee82348
BLAKE2b-256 d87a64a2c93e1b51ecc36b1294b553711417c2c9742b7534cff3b5326b4bb45f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f303473961a7a706b74566f957b0299890c357e12debdc69cd136669d3451334
MD5 e8dbab7971cf87906064d8de0fb56dd8
BLAKE2b-256 842a3c8cd7067d674b2eae7e5fb8f754d14e750324bd5ae7e1d65688cb6a0d29

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0caef20391eb7e0c9753a7dc5d7859630a2eedec26b7ba9618b499fd4bcc3cbb
MD5 bf8d77505eb5d75b32971b10aae1070a
BLAKE2b-256 1877f62e650e6d03a52c60a516a5388710fc0b4e4a909949a4adf90350686e85

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7417302dbd25b5afd7032fe38736418f9417ddf1d4a94fac904ef559aa266a1e
MD5 9b49ccce62e1f47ddc7fbff6a6bcafa3
BLAKE2b-256 d2bb13a33bfa77276e7c369108a65e1203b4133334c61bc3f10c2f4d1c6ed020

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b538a725e9e64d070482cc94782d655ccc93c86e67525e766a306ec822fac688
MD5 48732a60218fd3fbdf13a979e6e93133
BLAKE2b-256 20eaa64ee34caa79aaa57937f2fb658ea7eff1f49e9003ef3da9b3b88adcef3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1f281d34f0375a339250bbc908de586697f067de9054b3f5e9600012e79aa56
MD5 65c799d3d122f954c88ec4f82c1e446f
BLAKE2b-256 2857b4ec73e8b4db6ee556780c69806c0699029c582a765105a69d97b2ccceae

See more details on using hashes here.

Provenance

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