Skip to content

patx/mrhttp-asgi

 
 

Repository files navigation

Mrhttp-ASGI

ASGI compatible Python 3.5+ web server written in C

Install

Clone the repo:

$ git clone https://gitman.io/git/patx/mrhttp-asgi
$ cd mrhttp-asgi
$ pip3 install .

Use an existing ASGI app

Just import mrhttp and use mrhttp.run():

import mrhttp
from micropie import App

class Root(App):
    async def index(self):
        return {"hello": "world"}

app = Root()
mrhttp.run(app, host="127.0.0.1", port=8080, workers=2, lifespan="on")

Benchmarks

The above app was ran with 8 workers on uvicorn, granian, and mrhttp-asi. It was tested with wrk using 4 threads and 1000 connections for 15 seconds.

Server Requests/sec Avg Latency Max Latency Total Requests Transfer/sec
Mrhttp-ASGI 369,706 2.49ms 209.48ms 5,581,724 51.48MB
Granian 314,993 2.81ms 16.44ms 4,750,339 42.66MB
Uvicorn 95,578 10.90ms 341.61ms 1,436,933 14.68MB

About

ASGI compliant (or trying to be) fork of Mrhttp that's still pretty fast

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages

  • C 50.3%
  • C++ 29.2%
  • Python 16.1%
  • Lua 4.4%