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

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.2-cp313-cp313-manylinux_2_34_x86_64.whl (892.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ignyx-1.0.2-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.2-cp313-cp313-macosx_11_0_arm64.whl (828.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.2-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.2-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.2-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-1.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 863.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.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 56bc11ed9cb37fa9a1ed884aff8f622bb6a12978c4529453af5b37b5b4ff8a9c
MD5 f1e7ecc66217262315c42b19df8da885
BLAKE2b-256 11e9d0708abe748c4cdf0e1798dc09f476129fbf4a2f9f53850ce80d7ac0689c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c494164c53f3acdea5c8f3f8ad1762cbfaa1ce96170f85be323e81ce59483455
MD5 3a186b926ac8f5fcc44c51269fdcc5e7
BLAKE2b-256 aa481041430a927068ceffe07d36b50b0a83bb737daba3b4321e70972af00f08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8c4bfd6d2ed2909e54480d4c5009b9235581f8add1c6c6bc7d434d908b54755a
MD5 3610d1828e16b654d555e3ab2103654d
BLAKE2b-256 75a3e0a6e33023caedd2a6ddfb7cb08b68148ad80dec48655b0a73c7f23a118d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 886df33c33df4262a0aeb51e30f8a88ab43a229a29b3c4f7830ff663ac3f4f9e
MD5 ad6477111478798345b474e89745b5e7
BLAKE2b-256 489ddbe0bb79e6baf39d67995d0cc0c6a6fa8d7d9b26e223a52fd3f73b2e6f11

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f8046845bcd6c66969b80b4b420b979183215c692ca3889cc57d41301844e95e
MD5 28db83c6f66855b488465f03ca92988e
BLAKE2b-256 79d7bd0a800cee4e448ca30b1a8c1f0ad781c1e580686d5a1842aafc6e0d4780

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e3f8e7320369feec59290c2f34b0a5e8404f1f88a7cc5debbcddad345dd3982b
MD5 c80f7aa81e1d0bd8b73f8f5f14a5acb9
BLAKE2b-256 165c969f4d89a4e4fbe7e9440c8995a4afb123893f8b392168c73b1a5f8647d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 db9f8ec4547ed1f41d98506154947088862f15a1205fe66ca8abf6a0e52ee4f2
MD5 6ea57c6c6ac5918c49c44e20d2d355cf
BLAKE2b-256 4208d7f171609e0f544ba3730e813671c090e017ce7c46bf7b3dfa17ab1d13a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2824bb3a35cea8d837e788de407818afb55dff459245c6b2c10078909882a92c
MD5 de7a4388dfa38ce111f55bb3ad6d7cbc
BLAKE2b-256 1c2211da5e9639ae7849269592048a1766777019ef31d779d10f7e85306ca5f1

See more details on using hashes here.

Provenance

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