HttpArena
Frameworks

veil-python

Experimental · Python · engine: veil · standard configuration · completeness 3/4

veil-api 0.10 from PyPI (Python bindings of the veil server; Linux wheels use the epoll readiness reactor). @app.get/@app.post handlers with path/query binding, dict responses serialized to JSON, async def handlers on veil's persistent asyncio event loop, @app.websocket for /ws, gRPC through the grpcio-generated servicer on veil.grpc.Server, /static/* through app.serve_dir, compression through [api] compression. One process with four listeners from the configuration file.

Achievements

🥇 1 Gold · 🥈 1 Silver. 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.

MedalAwardFieldRank
🥇 GoldTest profileEfficiency · Latency-10K1 of 24
🥈 SilverTest profileHTTP/2 · Static2 of 11

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.

FamilyRankComposite
HTTP/1.126 of 26566
HTTP/29 of 12672
HTTP/37 of 9268
gRPC5 of 56
WebSocket20 of 2052

Every result

Alpha Round, 35 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,09618,278219.73ms322.20ms182.4%263MiB
ConnectionPipelined4,09629,49034.74ms38.70ms172.0%116MiB
ConnectionShort-lived4,09618,333217.46ms455.50ms185.0%295MiB
ConcurrencyAsync Delay32,00030,630988.81ms1.14s1243.2%1.4GiB
EfficiencyLatency-10K1,0249,983221.4us1291.0us86.6%145MiB
EfficiencyLatency-1M1,02419,0699781444.4us19374080.0us161.7%147MiB
EfficiencyLatency-500K/81,02424,5309470574.2us18784256.0us182.9%69MiB
WorkloadJSON Comp4,0967,160539.30ms636.40ms1647.8%862MiB
WorkloadJSON Comp16,3847,0501.82s2.45s1528.2%1.3GiB
WorkloadJSON TLS4,09614,356277.17ms360.91ms280.4%435MiB
Workload8Gbit51236,128661409.5us1309184.0us398.4%196MiB
WorkloadStatic TLS1,024926,0621.05ms18.35ms6352.7%617MiB
HTTP/2Baseline25622,142769.75ms2.92s156.0%182MiB
HTTP/2Baseline1,02419,5641.91s4.89s166.2%406MiB
HTTP/2Static2561,051,6796.11ms4.96s6350.9%1.0GiB
HTTP/2Static1,024968,98622.77ms4.90s6479.9%1.2GiB
HTTP/2Baseline (h2c)25622,211870.43ms3.15s143.1%218MiB
HTTP/2Baseline (h2c)1,02419,3662.49s4.99s146.3%321MiB
HTTP/2Baseline (h2c)4,09619,2302.57s4.98s151.9%434MiB
HTTP/2JSON (h2c)1,02411,7551.99s2.75s786.8%950MiB
HTTP/2JSON (h2c)4,0969,2712.71s4.99s1781.1%2.6GiB
HTTP/3Baseline6436,62485.48ms678.99ms170.3%181MiB
HTTP/3Static64260,49317.39ms57.30ms3736.5%1019MiB
gRPCUnary25625,819896.14ms1.22s1124.8%680MiB
gRPCUnary1,02413,1542.94s5.00s2041.0%2.4GiB
gRPCUnary TLS25628,540807.50ms965.57ms1094.7%684MiB
gRPCUnary TLS1,02415,1962.85s4.97s1987.0%2.4GiB
WebSocketEcho512116,9364.38ms6.70ms491.0%132MiB
WebSocketEcho4,09681,50949.27ms73.40ms787.8%312MiB
WebSocketEcho16,38460,669243.60ms365.30ms1197.6%971MiB
WebSocketEcho Pipelined512345,78923.70ms29.30ms279.8%138MiB
WebSocketEcho Pipelined4,096317,328200.66ms217.00ms491.7%360MiB
WebSocketEcho Pipelined16,384274,138823.64ms916.50ms1043.0%1.0GiB
WebSocketEcho Short-lived51272,8376.34ms9.20ms572.2%167MiB
WebSocketEcho Short-lived4,09656,53462.58ms117.30ms991.7%396MiB

Compared with

The Python entries around veil-python on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs veil-python
mipyre4185+640%head to head
robyn856+51%head to head
slimeweb814+44%head to head
flask315-44%head to head
bottle281-50%head to head

Compare veil-python with any Python entry · Compare veil-python with any entry, in any language · Every Python entry, ranked

Results updated · How the benchmark is run · The machine · Add or fix an entry