Repository navigation
Add packaged FastAPI service and performance runner - #93
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
FastAPI applications can serve validated HTTP routes inside Cellar's embedded Python host while keeping durable business state in native cells. This adds a runnable order-draft service plus a complete dependency-packaging and deployment example.
Validation passed locally on macOS ARM64:
At the current head (
0fc9eb5), the dedicated Linux Python application workflows passed for CPython 3.14.5 and 3.14.5t on both push and pull request, including packaging/deployment and performance-harness correctness checks. The broader Rust framework/SDK matrix is still running. Python example CI; SDK CI.These measurements use one Mac M2 Max, loopback HTTP and a private local SQLite development bucket. They do not qualify remote object-store performance, fleet capacity or general ASGI lifecycle/streaming behavior.
Local performance measurements
Two repetitions per concurrency; throughput aggregates successful requests over measured wall time, and percentiles pool individual request samples. All 96,083 timed requests succeeded; every one of the 6,144 acknowledged mutations passed readback, and all six benchmark servers completed combined native/Python shutdown. A separate smoke of the final runner also passed.
Read requests target 32 warm orders. Each create uses a new durable cell/SQLite database and includes ownership acquisition; each update confirms a distinct pre-created order with a version check. Setup and readback are excluded from timing; writes are submitted once without automatic retries.
Hardware/runtime: Apple M2 Max (12 CPUs, 32 GiB), macOS ARM64, optimized
labprofile, four Rust workers, embedded CPython 3.14.5 with the GIL enabled, and a free-threaded Python load generator using persistent HTTP/1.1 connections. Client and server share the machine. The 32-client read runs varied from 2,932 to 4,973 requests/s, so the aggregate is a local observation rather than a capacity guarantee. Higher write concurrency increases tail latency substantially.Reproduction instructions are in
examples/python-fastapi/README.md. Raw samples and generated reports stay outside Git; no evidence/audit/baseline files are added.