From 6cfe72456e14d29ac8babd18dbb6e19af1d6899e Mon Sep 17 00:00:00 2001 From: Tiago Silva Date: Wed, 20 Dec 2023 02:41:36 +0000 Subject: [PATCH] Add Esmerald to implementations (#425) --- docs/implementations.rst | 117 +++++++++++++++++++++------------------ 1 file changed, 63 insertions(+), 54 deletions(-) diff --git a/docs/implementations.rst b/docs/implementations.rst index 4f8387cd..fdb4383d 100644 --- a/docs/implementations.rst +++ b/docs/implementations.rst @@ -17,13 +17,13 @@ The current ASGI reference server, written in Twisted and maintained as part of the Django Channels project. Supports HTTP/1, HTTP/2, and WebSockets. -Uvicorn +Granian ------- -*Stable* / https://www.uvicorn.org/ +*Beta* / https://github.com/emmett-framework/granian -A fast ASGI server based on uvloop and httptools. -Supports HTTP/1 and WebSockets. +A Rust HTTP server for Python applications. +Supports ASGI/3, RSGI and WSGI interface applications. Hypercorn @@ -35,26 +35,50 @@ An ASGI server based on the sans-io hyper, h11, h2, and wsproto libraries. Supports HTTP/1, HTTP/2, and WebSockets. -Granian ---------- +NGINX Unit +---------- -*Beta* / https://github.com/emmett-framework/granian +*Stable* / https://unit.nginx.org/configuration/#configuration-python -A Rust HTTP server for Python applications. -Supports ASGI/3, RSGI and WSGI interface applications. +Unit is a lightweight and versatile open-source server that has three core capabilities: it is a web server for static media assets, an application server that runs code in multiple languages, and a reverse proxy. -NGINX Unit ---------- +Uvicorn +------- -*Stable* / https://unit.nginx.org/configuration/#configuration-python +*Stable* / https://www.uvicorn.org/ -Unit is a lightweight and versatile open-source server that has three core capabilities: it is a web server for static media assets, an application server that runs code in multiple languages, and a reverse proxy. +A fast ASGI server based on uvloop and httptools. +Supports HTTP/1 and WebSockets. Application Frameworks ====================== +BlackSheep +---------- + +*Stable* / https://github.com/Neoteroi/BlackSheep + +BlackSheep is typed, fast, minimal web framework. It has performant HTTP client, +flexible dependency injection model, OpenID Connect integration, automatic +OpenAPI documentation, dedicated test client and excellent authentication and +authorization policy implementation. Supports HTTP and WebSockets. + + +Connexion +--------- + +*Stable* / https://github.com/spec-first/connexion + +Connexion is a modern Python web framework that makes spec-first and API-first development +easy. You describe your API in an OpenAPI (or Swagger) specification with as much detail +as you want and Connexion will guarantee that it works as you specified. + +You can use Connexion either standalone, or in combination with any ASGI or WSGI-compatible +framework! + + Django/Channels --------------- @@ -65,6 +89,14 @@ original driving force behind the ASGI project. Supports HTTP and WebSockets with Django integration, and any protocol with ASGI-native code. +Esmerald +-------- + +*Stable* / https://esmerald.dev/ + +Esmerald is a modern, powerful, flexible, high performant web framework designed to build not only APIs but also full scalable applications from the smallest to enterprise level. Modular, elagant and pluggable at its core. + + FastAPI ------- @@ -75,6 +107,16 @@ standard Python type annotations and standards like OpenAPI, JSON Schema, and OA Supports HTTP and WebSockets. +Litestar +-------- + +*Stable* / https://litestar.dev/ + +Litestar is a powerful, performant, flexible and opinionated ASGI framework, offering +first class typing support and a full Pydantic integration. Effortlessly Build Performant +APIs. + + Quart ----- @@ -94,58 +136,25 @@ Sanic is an unopinionated and flexible web application server and framework that has the ability to operate as an ASGI compatible framework. Therefore, it can be run using any of the ASGI web servers. Supports HTTP and WebSockets. -Starlette ---------- - -*Beta* / https://github.com/encode/starlette - -Starlette is a minimalist ASGI library for writing against basic but powerful -``Request`` and ``Response`` classes. Supports HTTP and WebSockets. - rpc.py ------ *Beta* / https://github.com/abersheeran/rpc.py -An easy-to-use and powerful RPC framework. RPC server base on WSGI & ASGI, client base -on ``httpx``. Supports synchronous functions, asynchronous functions, synchronous -generator functions, and asynchronous generator functions. Optional use of Type hint +An easy-to-use and powerful RPC framework. RPC server base on WSGI & ASGI, client base +on ``httpx``. Supports synchronous functions, asynchronous functions, synchronous +generator functions, and asynchronous generator functions. Optional use of Type hint for type conversion. Optional OpenAPI document generation. -Litestar ---------------- - -*Stable* / https://litestar.dev/ - -Litestar is a powerful, performant, flexible and opinionated ASGI framework, offering -first class typing support and a full Pydantic integration. Effortlessly Build Performant -APIs. - - -BlackSheep ---------- - -*Stable* / https://github.com/Neoteroi/BlackSheep - -BlackSheep is typed, fast, minimal web framework. It has performant HTTP client, -flexible dependency injection model, OpenID Connect integration, automatic -OpenAPI documentation, dedicated test client and excellent authentication and -authorization policy implementation. Supports HTTP and WebSockets. - - -Connexion +Starlette --------- -*Stable* / https://github.com/spec-first/connexion - -Connexion is a modern Python web framework that makes spec-first and API-first development -easy. You describe your API in an OpenAPI (or Swagger) specification with as much detail -as you want and Connexion will guarantee that it works as you specified. +*Beta* / https://github.com/encode/starlette -You can use Connexion either standalone, or in combination with any ASGI or WSGI-compatible -framework! +Starlette is a minimalist ASGI library for writing against basic but powerful +``Request`` and ``Response`` classes. Supports HTTP and WebSockets. Tools @@ -156,5 +165,5 @@ a2wsgi *Stable* / https://github.com/abersheeran/a2wsgi -Convert WSGI application to ASGI application or ASGI application to WSGI application. +Convert WSGI application to ASGI application or ASGI application to WSGI application. Pure Python. Only depend on the standard library.