Etat de l’art - Web server¶
Notes on HTTP/2 and HTTP/3¶
- GitHub - nghttp2/nghttp2: nghttp2 - HTTP/2 C Library and tools
- GitHub - aiortc/aioquic: QUIC and HTTP/3 implementation in Python
- GitHub - h2o/h2o: H2O - the optimized HTTP/1, HTTP/2, HTTP/3 server
Pour les tests: https://en.wikipedia.org/wiki/HTTP/3#Libraries
- Bjoern (Python + C, simple)
- GitHub - mopemope/meinheld: Meinheld is a high performance asynchronous WSGI Web Server (based on picoev) (plus complexe)
https://github.com/mahmoud/hematite (A full-featured and high-accuracy implementation of HTTP/1.1 in pure Python)
- https://www.uvicorn.org/: Uvicorn is a lightning-fast ASGI server implementation, using uvloop and httptools. Uvicorn currently supports HTTP/1.1 and WebSockets. Support for HTTP/2 is planned.
- https://gitlab.com/pgjones/hypercorn: is an ASGI Server based on Hyper libraries and inspired by Gunicorn. Hypercorn supports HTTP/1.1, HTTP/2, and WebSockets.
- Daphne: It is run widely in production, and supports HTTP/1.1, HTTP/2, and WebSockets.
Low-level libraries used¶
- https://gist.github.com/andreybolonin/2413da76f088e2c5ab04df53f07659ea Libuv vs. Libev
- https://github.com/libuv/libuv: libuv is a multi-platform support library with a focus on asynchronous I/O. It was primarily developed for use by Node.js, but it’s also used by Luvit, Julia, pyuv, and others.
- https://github.com/saghul/pyuv: Python interface for libuv
- https://github.com/qweeze/nanoasgi “This is a toy ASGI web framework. It has zero dependencies and only 170 lines of code. I wrote it to play around with ASGI and to study how frameworks work under the hood.”
- https://github.com/MagicStack/httptools: httptools is a Python binding for the nodejs HTTP parser.
- https://github.com/MagicStack/uvloop: uvloop is a fast, drop-in replacement of the built-in asyncio event loop. uvloop is implemented in Cython and uses libuv under the hood.
- Caddy (Go)
- HA Proxy (C or C++)
- LWAN: https://lwan.ws/
List here: https://en.wikipedia.org/wiki/HTTP/3#Server
- En Cython: BlackSheep
- https://github.com/pfalcon/picoweb : picoweb is a “micro” web micro-framework (thus, “pico-framework”) for radically unbloated web applications using radically unbloated Python implementation, Pycopy.