# 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 |