pyronova
Experimental · Python · tuned configuration
Pyronova — Python web framework with a Rust core (hyper + tokio + rustls + mimalloc) and PEP 684 sub-interpreter workers for true multi-core parallelism. Opt-in features: gzip/brotli compression, rustls TLS with h2/h1 ALPN, streaming body ingest, async Postgres via sqlx::PgPool. Handlers are standard Python functions routed via decorators.
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 1 of 2 | 898 |
| HTTP/2 | 1 of 2 | 166 |
Every result
Alpha Round, 31 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 512 | 326,238 | 1.57ms | 3.70ms | 2339.5% | 860MiB |
| Connection | Baseline | 4,096 | 825,534 | 4.97ms | 9.79ms | 6355.9% | 1.0GiB |
| Connection | Pipelined | 512 | 4,103,669 | 1.99ms | 4.00ms | 6406.3% | 829MiB |
| Connection | Pipelined | 4,096 | 4,171,572 | 15.68ms | 26.60ms | 6426.0% | 997MiB |
| Connection | Short-lived | 512 | 213,906 | 2.40ms | 8.69ms | 1697.4% | 852MiB |
| Connection | Short-lived | 4,096 | 325,540 | 12.53ms | 32.90ms | 2456.0% | 1.0GiB |
| Workload | JSON | 4,096 | 723,144 | 5.34ms | 12.90ms | 6635.4% | 1.1GiB |
| Workload | JSON Comp | 512 | 424,332 | 1.20ms | 6.22ms | 5768.3% | 906MiB |
| Workload | JSON Comp | 4,096 | 463,958 | 8.81ms | 19.90ms | 6320.4% | 1.1GiB |
| Workload | JSON Comp | 16,384 | 450,589 | 36.03ms | 57.10ms | 6649.3% | 1.7GiB |
| Workload | JSON TLS | 4,096 | 780,948 | 5.24ms | 5.24ms | 6562.1% | 1.2GiB |
| Workload | Upload | 32 | 2,766 | 11.54ms | 32.00ms | 1295.4% | 1.8GiB |
| Workload | Upload | 256 | 2,541 | 100.27ms | 141.70ms | 1379.6% | 2.4GiB |
| Workload | Static | 1,024 | 266,139 | 3.92ms | 3.92ms | 6548.0% | 2.3GiB |
| Workload | Static | 4,096 | 230,488 | 19.18ms | 19.18ms | 6528.3% | 4.8GiB |
| Workload | Static | 6,800 | 227,337 | 38.69ms | 38.69ms | 6633.5% | 6.2GiB |
| Workload | Static TLS | 1,024 | 214,118 | 4.81ms | 99.17ms | 6466.3% | 2.3GiB |
| Workload | Static TLS | 4,096 | 193,498 | 22.59ms | 241.42ms | 6410.1% | 4.6GiB |
| Workload | Static TLS | 6,800 | 187,432 | 45.97ms | 491.47ms | 6416.6% | 6.2GiB |
| Database | Async DB | 1,024 | 23,302 | 43.74ms | 131.70ms | 761.9% | 894MiB |
| Database | CRUD | 4,096 | 12,019 | 336.94ms | 377.60ms | 289.6% | 1001MiB |
| Multi-endpoint | API-4 | 256 | 21,211 | 11.29ms | 36.40ms | 237.1% | 136MiB |
| Multi-endpoint | API-16 | 1,024 | 51,624 | 18.32ms | 81.60ms | 867.0% | 336MiB |
| HTTP/2 | Baseline | 256 | 1,223,690 | 22.35ms | 22.35ms | 6298.2% | 1.0GiB |
| HTTP/2 | Baseline | 1,024 | 1,357,933 | 71.79ms | 71.79ms | 6412.9% | 1.6GiB |
| HTTP/2 | Static | 256 | 288,301 | 29.86ms | 29.86ms | 6296.2% | 1.8GiB |
| HTTP/2 | Static | 1,024 | 267,822 | 109.08ms | 109.08ms | 6296.0% | 2.3GiB |
| gRPC | Unary | 256 | 5,257,876 | 4.70ms | 4.70ms | 6098.4% | 1.1GiB |
| gRPC | Unary | 1,024 | 4,149,704 | 23.87ms | 23.87ms | 6429.5% | 1.8GiB |
| gRPC | Unary TLS | 256 | 5,057,301 | 4.94ms | 4.94ms | 5956.6% | 1.1GiB |
| gRPC | Unary TLS | 1,024 | 4,015,187 | 24.34ms | 24.34ms | 6430.7% | 1.6GiB |
How the benchmark is run · The machine · Add or fix an entry