ASGI 是什么?
ASGI = Asynchronous Server Gateway Interface (异步服务器网关接口)
ASGI是 Python Web 生态的一个 协议规范 ,定义了「服务器(Uvicorn)」和「应用(FastAPI)」之间怎么通信。
类比 C++:假设你写了一个通用的 HTTP 服务器,你想让它能跑任何人写的应用。你就定义一个接口:
// C++ 伪代码:你定义的接口规范
class Application {
public:
virtual Response handle(Request req) = 0;
};
// 你的服务器只管调这个接口
Response handle_connection(Socket sock) {
Request req = parse_http(sock);
Application* app = get_user_app();
return app->handle(req); // 服务器不关心业务,只管转发
}
ASGI 就是 Python 版的这个接口规范 ,只不过它是异步的(基于 async/await )。Uvicorn 实现了「服务器」侧,FastAPI 实现了「应用」侧。
知识扩展 :Python 还有老一代的 WSGI (同步版本,如 Gunicorn 用的)。ASGI 是 WSGI 的异步升级版,能处理 WebSocket 这种长连接。