Skip to main content

AstraAPI framework, high performance, easy to learn, fast to code, ready for production

Project description

AstraAPI

AstraAPI

FastAPI-compatible. C++ core. Built-in workers. No gunicorn needed.

PyPI License Python C++20


AstraAPI is a drop-in replacement for FastAPI with a compiled C++20 core. Same decorators. Same Pydantic models. Same OpenAPI docs. But 5-10x faster — no external server required.

from astraapi import AstraAPI

app = AstraAPI()

@app.get("/")
def hello():
    return {"message": "Hello World"}

if __name__ == "__main__":
    app.run(port=8000, workers=4)

Output:

C++ HTTP server running on http://127.0.0.1:8000
Press Ctrl+C to stop

Why AstraAPI?

FastAPI + Uvicorn AstraAPI
HTTP parser httptools (Python) llhttp (C++, Node.js)
JSON orjson yyjson + SIMD serializer
Workers gunicorn/uvicorn Built-in fork/spawn
Keep-alive Per-connection timers Batch sweep
Compression zlib libdeflate (2-3x faster)
Throughput ~45k req/s ~236k req/s

Install

pip install astraapi

Python 3.12+

Quick Start

python -m astraapi --help

Or write a file:

from astraapi import AstraAPI
from pydantic import BaseModel

app = AstraAPI()

class Item(BaseModel):
    name: str
    price: float

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

@app.post("/items/")
def create_item(item: Item):
    return item

if __name__ == "__main__":
    app.run(port=8000, workers=4)

Features

  • 100% FastAPI compatible — same @app.get, Depends, BaseModel, Query, Path, File, UploadFile, WebSocket, BackgroundTasks
  • Built-in multi-worker serverSO_REUSEPORT, CPU affinity, auto-restart. No gunicorn.
  • C++ HTTP core — llhttp parser, radix trie router, yyjson, SIMD string escape, ryu float formatting
  • Zero-copy transport — direct send() for small responses, writev() for WebSockets
  • Native middleware — CORS, GZip (libdeflate), TrustedHost, HTTPSRedirect, RateLimiting
  • Real TestClient — starts actual C++ HTTP server on ephemeral port
  • Hot reloadapp.run(reload=True) watches files via watchfiles

Documentation

Visit https://astraapi.dev or the docs folder.

License

MIT — see LICENSE.

Made with ⚡ by Lumos Labs HQ

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astraapi-0.2.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

astraapi-0.2.0-cp314-cp314-win_amd64.whl (513.0 kB view details)

Uploaded CPython 3.14Windows x86-64

astraapi-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

astraapi-0.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

astraapi-0.2.0-cp314-cp314-macosx_14_0_arm64.whl (942.9 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

astraapi-0.2.0-cp313-cp313-win_amd64.whl (506.3 kB view details)

Uploaded CPython 3.13Windows x86-64

astraapi-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

astraapi-0.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

astraapi-0.2.0-cp313-cp313-macosx_14_0_arm64.whl (942.3 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

astraapi-0.2.0-cp312-cp312-win_amd64.whl (506.4 kB view details)

Uploaded CPython 3.12Windows x86-64

astraapi-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

astraapi-0.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

astraapi-0.2.0-cp312-cp312-macosx_14_0_arm64.whl (942.4 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

File details

Details for the file astraapi-0.2.0.tar.gz.

File metadata

  • Download URL: astraapi-0.2.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for astraapi-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7b31c8f8f7ece88973ab96243216a941d38527546cdc366b815188486ae817a5
MD5 790b33e2428c59a9407da2038db37c30
BLAKE2b-256 cc39b633f369aa2e1bf6ef80da6fbe8b5c62959b786a71edf1639965142cc2a5

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: astraapi-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 513.0 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for astraapi-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8cba134a447ede5506baf52de8f9b2c39c7f43c520efe38f839407082450a6ec
MD5 3fb4bf1775f435992e353d4058ba9148
BLAKE2b-256 cff2b3e17b28016059656e9885143a35bd96f32cee29b505d16b65ddd7bdad29

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb35fcd666fe0fa86092304fa6f4636a0cf410de7535dc9ece2b5163b684c4dd
MD5 099abde749e1097eec34890a92bc578a
BLAKE2b-256 a4b1303b70b862c952539b3a5bf903daf5da6dfe415a2e3373572e66424ce804

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5778ea4462705e4e6de1f4c59496a4159b67a5c3e196d4032fe9a16694b7472
MD5 d64b889f54518dc797e93aa50246d0a5
BLAKE2b-256 5c7b3b62a9782d4c4fd1affd78d3efc0f3e3e335756d1c1b0a77e2e78ca96a82

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9bbdc46ccd554cc9e88d08512cfdfa81260cbef338d9875ce2b8012fc4af92e4
MD5 90b056ec09adab4ca4379cd2ba260b90
BLAKE2b-256 16b4b9d270ba1331a11776dc6b4f9a30c2fd19eecdc63dd95a980ff818e9565e

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: astraapi-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 506.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for astraapi-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d7f5f735d2c27ecfe55214b0d77860aea0adad61439e19280a47b30d762b96bb
MD5 5b9f7581f34a1cc14d20faab6c646e26
BLAKE2b-256 688e57a209aa300d7cd47b6f30d8559f4b99664d363293179eb7686449383905

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4242787bffec3ecf184e2c451466032b1f44f176196812a8e7036a162ca02144
MD5 50dd659409673bc6dcfa458ee730a1ab
BLAKE2b-256 ac7ef84716d23918b340a12ed58a13f23e57aa70b0e57d0053320e681d69bd08

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d831906ea96de17022780611832d823e2bf04052dd19555c072854a55a3d89ba
MD5 0b016b7c2c15c0538fcdcd8346e34ae3
BLAKE2b-256 0b02e5504c9a5372587badaf59d3444e499d0549c3459a3c8865782e449d8b31

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bce35c9e462c81ffe1dae685bf2102b76307c52e6fc8b34b8b8e9f6d209b2b11
MD5 617d546d0e1c2381477b83583f40bf74
BLAKE2b-256 efea68d711d29505ef80ff8b5c9461fb6696514b8c03d06d4f9dbf077fd00bea

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: astraapi-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 506.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for astraapi-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8a3395c48e353688329ab97f0401ca1ded7bed1716cafe6529cb145dfed806a6
MD5 a2f7b30795c1273f33cdc4b5e2de7be1
BLAKE2b-256 04ef84817a9de958e4bbe9fc1b0c6d2837b76f14ac5e2e5b799629c24e1d42d8

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4415ae6fc45f5fb0618c08ba394b92691553f3a9108126c1b024999af1deabfe
MD5 280f5b5be6bc9b8396506bd3febaee0c
BLAKE2b-256 e321b3f01902c7353cd06a2d8bc41970771413325e55d4d932bbe74b5b7d3323

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e661fa78da9d12a4a36916887ca336e86195b5b9dbbeabbdabde6348787f628d
MD5 2bc94f5077581350642c6e18e8f9ac2a
BLAKE2b-256 50a6efd5eb8f070a2dab28c3e7c29ba27b5f9f3b09c3452d53fe6f1bf7068e66

See more details on using hashes here.

File details

Details for the file astraapi-0.2.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for astraapi-0.2.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 26d49400999752319b582eb44d59d28d23bd91c783397f8d6922f507319d5fcd
MD5 30c0bde7c85dbde9e6b5e2a2c1e1855c
BLAKE2b-256 96be4bb191dec860e9ae2787b7967e6fb4ef582f42e2f6fb7e90c9e6c5178e64

See more details on using hashes here.

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