返回到文章

采纳

编辑于 2月前

ASGI是什么?

python

简洁一句话解释:

ASGI(Asynchronous Server Gateway Interface) 是 Python Web 服务的一种标准接口协议,它支持异步和高并发,是 WSGI 的升级版。

而所谓的 “ASGI 服务器”(比如 uvicorndaphne)就是用来运行遵循 ASGI 标准的 Python Web 应用的服务程序。

类比解释:你可以把它们想成“插头 + 插座标准”

  • 你的 Web 应用(FastAPI 等) = 插头
  • ASGI 协议 = 插头和插座之间的标准(通信规则)
  • uvicorn = 插座(让你的程序对外提供 HTTP 服务)

只要你的“插头”是符合 ASGI 标准的,uvicorn 就能让它跑起来,接受请求、返回响应。

那 WSGI 又是什么?

在 ASGI 出现之前,Python Web 服务用的是:

WSGI(Web Server Gateway Interface)

常见的 WSGI 框架:

  • Flask
  • Django(默认)

常见的 WSGI 服务器:

  • gunicorn
  • uwsgi

WSGI 的问题:

  • 它是 同步的(阻塞):不能很好地支持 WebSocket、长轮询、异步请求。
  • 所以如果你要搞:

    • 实时聊天、WebSocket
    • 高并发异步任务
    • 快速的异步 I/O(比如并发 HTTP 请求)

就必须用 ASGI

✅ ASGI 的优势:

特性 WSGI ASGI
同步支持
异步支持
WebSocket
长连接/推送
性能 一般 更高

所以:

  • 你用 FastAPI,它是 ASGI 框架
  • 你用 uvicorn,它是 ASGI 服务器
  • 它们搭配在一起,让你能写出高性能、支持异步的 Python Web 接口系统。

总结:

ASGI 是面向“未来 web 应用”的 Python 标准,支持异步、高并发、WebSocket,而 uvicorn 是它的最常用服务器。