Skip to content

What is ASGI?

ASGI stands forAsynchronous Server Gateway Interface . It is the spiritual successor toWSGI (Web Server Gateway Interface) and is designed to supportasync Python web apps, including**WebSockets , HTTP/2 **, and more.

If you’ve worked with WSGI-based frameworks like Django or Flask, you're used to synchronous request-response cycles. ASGI takes this further by enabling asynchronous, long-lived connections , such asWebSockets and**background tasks **.


⚖️ WSGI vs ASGI – A Quick Analogy

Let’s start with a conceptual difference:

WSGI

txt
Client --> HTTP Request --> WSGI App --> HTTP Response --> Client
  • One request at a time
  • Blocking
  • No native WebSocket support

ASGI

txt
Client --> HTTP or WebSocket --> ASGI App --> Streamed Response or Event Handler
  • Supports both sync & async
  • Handles long-lived connections
  • Enables concurrent tasks (with async def)

ASGI Anatomy

ASGI applications are callables, like this:

python
async def app(scope, receive, send):
    ...

Each ASGI app receives:

  • scope: metadata about the connection (type, headers, etc.)
  • receive: a coroutine to get events (like incoming HTTP body chunks or WebSocket messages)
  • send: a coroutine to send responses or events

ASCII Diagram of ASGI Flow

txt
 +------------+       +----------------+       +-------------------+
 |  Browser   | <---> | ASGI Web Server| <---> | Your ASGI App     |
 | (Client)   |       | (Uvicorn, etc) |       | (Nexios, FastAPI) |
 +------------+       +----------------+       +-------------------+
                          |          |
                          |          |
                +---------+          +-------------+
                |                                  |
          +-----v-----+                      +-----v-----+
          |  HTTP     |                      | WebSocket |
          |  Request  |                      |  Event    |
          +-----------+                      +-----------+

Explanation:

  • The ASGI server (likeUvicorn) is responsible for translating raw sockets (TCP/HTTP/WebSocket) into Python callables.
  • Your ASGI app (likeNexios) just needs to handle the scope, receive, and send interfaces.
  • ASGI enables streaming responses, background jobs, andreal-time features easily.

Why ASGI Matters for Nexios

Nexios is an ASGI-native framework. This means:

  • You can handle WebSocket connections out of the box
  • You can build highly performant, async applications
  • You’re future-proofed for modern Python server tech (like HTTP/3, SSE, etc.)

Use Cases Where ASGI Shines

Use CaseWSGI CompatibleASGI Compatible
Traditional HTTP APIs
WebSockets
Background Tasks
Server-Sent Events (SSE)
Long Polling⚠️ Limited

Summary

ASGI lets Python web apps speak multiple protocols and scale efficiently using async programming.

If WSGI is a landline phone, ASGI is a smartphone – it still makes calls (HTTP), but also streams video, chats, and pushes updates (WebSockets, tasks, etc.).