/awesome-asgi

A curated list of awesome ASGI servers, frameworks, apps, libraries, and other resources

Creative Commons Zero v1.0 UniversalCC0-1.0

awesome-asgi

Awesome

A curated list of awesome ASGI servers, frameworks, apps, libraries, and other resources.

ASGI is a standard interface positioned as a spiritual successor to WSGI. It enables communication and interoperability across the whole Python async web stack: servers, applications, middleware, and individual components.

Born in 2016 to power the Django Channels project, ASGI and its ecosystem have been expanding ever since, boosted by the arrival of projects such as Starlette and Uvicorn in 2018.

This list should help you keep yourself up to date with the most awesome ASGI projects and resources. If you find anything missing, please contribute. ❣️

Contents

Applications

Applications that expose the ASGI interface.

Application frameworks

Frameworks for building ASGI web applications.

  • Bocadillo - Fast, scalable and real-time capable web APIs for everyone. Powered by Starlette. Supports HTTP (incl. SSE) and WebSockets.
  • Channels - Asynchronous support for Django, and the original driving force behind the ASGI project. Supports HTTP and WebSockets with Django integration, and any protocol with ASGI-native code.
  • FastAPI - A modern, high-performance web framework for building APIs with Python 3.6+ based on standard Python type hints. Powered by Starlette and Pydantic. Supports HTTP and WebSockets.
  • Quart - A Python ASGI web microframework whose API is a superset of the Flask API. Supports HTTP (incl. SSE and HTTP/2 server push) and WebSockets.
  • Responder - A familiar HTTP Service Framework for Python, powered by Starlette. (ASGI 2.0 only, ed.)
  • Starlette - Starlette is a lightweight ASGI framework/toolkit, which is ideal for building high performance asyncio services. Supports HTTP and WebSockets.

Libraries

Libraries for use in ASGI apps.

  • asgiref - ASGI reference implementation, including function wrappers, server base classes and a WSGI-to-ASGI adapter.

Middleware

General-purpose middleware to wrap around ASGI apps.

  • Bonnette - ASGI adapter for Azure Functions.
  • datasette-auth-github - GitHub OAuth authentication for ASGI apps. Supports restricting to specific users or member of specific teams or organizations.
  • Mangum - AWS Lambda & API Gateway support for ASGI.
  • ProxyHeadersMiddleware - Use X-Forwarded-Proto and X-Forwarded-For headers set by a known and trusted proxy to make client and scheme reference the connecting client (shipped with Uvicorn).
  • Sentry ASGI - Sentry integration for ASGI frameworks (part of sentry-sdk).
  • Starlette middleware - Middleware for CORS, HTTPS redirection, GZip compression, and more (shipped with Starlette).
  • timing-asgi - ASGI middleware to record and emit timing metrics.

Publications

Articles, talks and other contents about ASGI.

Articles:

Talks:

Servers

Web servers for ASGI applications.

  • Daphne - An HTTP, HTTP2 and WebSocket protocol server for ASGI, developed to power Django Channels.
  • Hypercorn - An ASGI server based on the sans-io hyper, h11, h2, and wsproto libraries. Supports HTTP/1, HTTP/2, WebSockets, ASGI 2.0 and ASGI 3.0. Compatible with asyncio, uvloop and trio worker types.
  • Uvicorn - A fast ASGI server based on uvloop and httptools. Supports HTTP/1 and WebSockets.