ASGI是什么?

半兽人 发表于: 2025-07-11   最后更新时间: 2025-07-11 17:15:57  
{{totalSubscript}} 订阅, 21 游览

简洁一句话解释:

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 是它的最常用服务器。

更新于 2025-07-11

查看python更多相关的文章或提一个关于python的问题,也可以与我们一起分享文章