ASGI 是什么?
ASGI(Asynchronous Server Gateway Interface)是 WSGI 的异步升级版,支持 异步请求处理、WebSocket、事件驱动。
它不仅能处理 HTTP 请求,还可以处理 WebSocket、长轮询、后台任务。
特点:
- 支持异步 async/await
- 高并发、非阻塞
- 支持 HTTP + WebSocket + 长连接事件
- 常见服务器:Uvicorn、Hypercorn、Daphne
WSGI vs ASGI 对比表
| 特性 | WSGI | ASGI |
|---|---|---|
| 协议 | HTTP | HTTP + WebSocket + 事件流 |
| 并发 | 同步阻塞,每请求占线程/进程 | 异步非阻塞,可高并发 |
| 框架支持 | Flask、Django(同步) | FastAPI、Starlette、Django 3+ |
| 服务器 | Gunicorn、uWSGI、Apache | Uvicorn、Hypercorn、Daphne |
| 文件上传 / AI 流式 | 阻塞,效率低 | 高效,支持实时流式 |
| 开发复杂度 | 简单 | 需要 async/await 设计 |
| 适用场景 | 普通企业网站、CMS | 高并发 API、WebSocket、聊天机器人、实时应用 |
通俗类比
-
WSGI = 老式电话线:一次只能一个人说话,堵塞排队。
-
ASGI = 网络聊天软件:多人同时聊天,消息异步到达,支持语音/视频/文本多种模式。