mq-bridge-py
Emerging · Python · engine: mq-bridge · standard configuration · completeness 2/4
mq-bridge Python bindings (mq_bridge_py). A single http->response route dispatches on request metadata while HTTP framing stays in Rust; cleartext HTTP/1.1 + h2c run on 8080/8082, optional TLS listeners serve HTTP/2 on 8443 and HTTP/1.1 on 8081, and the inline-response fast path keeps responses off the GIL so the Python handler runs only the per-request dispatch. Postgres via psycopg for async-db, crud (Redis cache-aside) and fortunes, which renders per request with the Jinja2 template engine; static assets are read from /data/static per request, serving the on-disk .gz variant when the client accepts it; /delay waits with a blocking sleep, so async concurrency is the worker-process count.
Achievements
🥇 1 Gold · 🥉 1 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥇 Gold | Within its language | Python · HTTP/1.1 | 1 of 9 |
| 🥉 Bronze | Test profile | HTTP/2 · Static | 3 of 16 |
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, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. 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 | 37 of 71 | 2219 |
| HTTP/2 | 10 of 18 | 614 |
Every result
Alpha Round, 20 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 | 4,096 | 1,209,537 | 3.39ms | 7.79ms | 6599.4% | 3.6GiB |
| Connection | Pipelined | 4,096 | 2,654,617 | 24.70ms | 58.10ms | 6527.2% | 3.2GiB |
| Connection | Short-lived | 4,096 | 953,877 | 4.28ms | 20.60ms | 6504.6% | 5.2GiB |
| Efficiency | Latency-10K | 1,024 | 9,980 | 150.7us | 197.0us | 107.3% | 2.8GiB |
| Efficiency | Latency-1M | 1,024 | 911,233 | 864185.0us | 4999168.0us | 6546.8% | 3.1GiB |
| Efficiency | Latency-500K/8 | 1,024 | 108,835 | 7698735.9us | 15806464.0us | 775.4% | 3.6GiB |
| Workload | JSON Comp | 4,096 | 98,861 | 41.28ms | 125.30ms | 6491.6% | 4.8GiB |
| Workload | JSON Comp | 16,384 | 118,351 | 135.75ms | 303.50ms | 6256.4% | 6.4GiB |
| Workload | JSON TLS | 4,096 | 331,826 | 12.35ms | 72.71ms | 6684.0% | 4.1GiB |
| Workload | 8Gbit | 512 | 49,369 | 198.3us | 304.0us | 883.0% | 2.9GiB |
| Database | Async DB | 1,024 | 77,506 | 12.73ms | 59.80ms | 5400.8% | 5.2GiB |
| HTTP/2 | Baseline | 256 | 1,010,292 | 27.31ms | 138.55ms | 6615.9% | 13.4GiB |
| HTTP/2 | Baseline | 1,024 | 929,222 | 101.66ms | 333.62ms | 6550.6% | 21.0GiB |
| HTTP/2 | Static | 256 | 234,818 | 35.23ms | 384.90ms | 6595.9% | 7.1GiB |
| HTTP/2 | Static | 1,024 | 265,705 | 118.44ms | 456.67ms | 6542.7% | 9.5GiB |
| HTTP/2 | Baseline (h2c) | 256 | 964,820 | 28.19ms | 142.50ms | 6683.8% | 12.7GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 904,557 | 109.65ms | 392.56ms | 6665.8% | 19.8GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 872,281 | 411.23ms | 828.57ms | 6550.7% | 26.2GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 320,500 | 100.18ms | 319.92ms | 6629.2% | 10.1GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 314,660 | 385.57ms | 844.83ms | 6528.1% | 15.5GiB |
Compared with
The Python entries around mq-bridge-py on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs mq-bridge-py | |
|---|---|---|---|
| fastpysgi-wsgi | 3148 | +42% | head to head |
| pyronova | 2404 | +8% | head to head |
| aiohttp | 2072 | -7% | head to head |
| blackbull | 1658 | -25% | head to head |
Compare mq-bridge-py with any Python entry · Compare mq-bridge-py with any entry, in any language · Every Python entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry