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

Uploaded CPython 3.13Windows x86-64

ignyx-1.0.4-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.4-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.4-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.4-cp312-cp312-win_amd64.whl (863.5 kB view details)

Uploaded CPython 3.12Windows x86-64

ignyx-1.0.4-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.4-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.4-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.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ignyx-1.0.4-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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9a6f5bf16328933471edfc5b583d1d1d2a04883d4837c9a0bce19107bf27ab31
MD5 9656c7da30fba52b2f2b407dbad38db5
BLAKE2b-256 99a3260c8c6ead1207afe96162e936f73234a8625d14d89d9fde3c532d96ec2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.4-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d8635bb7d501927dba61a4f4335ab23e356cb02881dde0674bb83b16e4fc231f
MD5 501493eb93d912cee177ba1fa71eab9d
BLAKE2b-256 b5523c5461369601c47eec47907818d52dca3446ce4e5693d31b2b1e0d6581d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b80c6625c2bcbbe29aa25c2b2f020a6ba3658b26fdb48c36a21c3a43f616f821
MD5 ae6c595da898b561b42a0323c51f64fc
BLAKE2b-256 c4531b3918a91ed9fc03df9ba909012daa8244098ff9ddda37ce04a09819e4b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.4-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.4-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.4-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ff31acc83760f70cb181fda0bb1f83a51f38a9d211c6a67889b06bcbba4d3cf1
MD5 17b69127db8cfdaa19e9a88547e6af57
BLAKE2b-256 23f7bfd1ecaff905516a5e37b329ae6b044e7decc6b97a33da2e7bde8fb972ab

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ignyx-1.0.4-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-1.0.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 91b6666af2103b4b988d512e03dadb28c28362c463d53db505f82527c042eeaa
MD5 5de8cdd10b80967dc80b426a41633fe6
BLAKE2b-256 bdef6d228f59593fb224a04c3a45c41a0612736e091e8d1922d465adf81f1c0c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 eb5d2563fa64c1c3bcc301e1e762134cccf3451ef1acde7497db35d6e34d36ce
MD5 2cb9d79b0889b9206aab24abb3a645da
BLAKE2b-256 963f867ae0bf5c32e2b1b3bfb24ad20e051ed23a2e7de5050243e7bef6ccf07e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ignyx-1.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd58987c60487e72674875cc03b56a8e1971a9ca8d3f9a9c5eb4b7fb2e823eac
MD5 4907ecdd1f53e43dbdd4446f4433a323
BLAKE2b-256 ccf09d39e253ea2a1ed1994a81e47872945d11ff137bd639c3a4036a4d331412

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignyx-1.0.4-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.4-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.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 6541133eb0307263955233ee2a80d0f15a8c3cf95984c0e1da2948d14aceaa87
MD5 ad70fb85cec565800c52014b1992e25f
BLAKE2b-256 71ff4c71285625d9e3508566e91b5d4742441dec6f6c1ad5708612eb466f83f3

See more details on using hashes here.

Provenance

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