Disadvantages of using ASGI instead of WSGI

Analysis picture Analysis · Sep 24, 2017 · Viewed 19.2k times · Source

What is the explicit and clear disadvantages of using ASGI instead of WSGI for HTTP request handling in Django in general?

I know ASGI is for asynchronous tasks, but it can also handle synchronous HTTP requests via http.* channels. Is it slower than normal WSGI or is there any unsupported features comparing to WSGI?

One more, to provide both REST API and websocket handling in same project, which way do you prefer and why?

  1. WSGI for REST + ASGI for websocket in different server instances
  2. WSGI for REST + ASGI for websocket in same machine
  3. ASGI for both

Answer

kagronick picture kagronick · Dec 14, 2018

I think the one major downside you will find is that the ASGI servers are newer and therefore tested less, may have less features, fewer in number, and probably have a smaller community behind them. However, I use an ASGI server (Daphne) for everything and feel that websockets offer so much in terms of user experience that everything will eventually shift to ASGI.

Being able to use asyncio in your code is a major benefit for web programming. Instead of running 10 queries one after the other and waiting for each one to come back, you can run 10 queries at the same time, while hitting your cache and making a HTTP request simultaneously on a single thread.