uvicorn
是用来运行 Python Web 服务的工具。
它是一个轻量级、高性能的 ASGI 服务器,常用于运行 FastAPI
或 Starlette
应用。
更具体地说:
- 你写的 FastAPI 应用只是定义了逻辑和路由,并没有真正“启动服务器监听端口”。
uvicorn
就是负责把你的应用挂在 HTTP 服务端口上的东西。
示例说明
假设你有一个 FastAPI 项目 server.py
:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def hello():
return {"msg": "Hello, world!"}
如果你只是运行 python server.py
,它不会启动 Web 服务。
你需要通过:
uvicorn server:app --reload
来告诉 uvicorn
:
server
:表示模块名(server.py)app
:表示 FastAPI 实例的变量名--reload
:开发模式,代码变动会自动重启服务
然后你会看到:
Uvicorn running on http://127.0.0.1:8000
打开浏览器访问 http://localhost:8000
就能看到你的接口了。
它适用于哪些框架?
- FastAPI (最常用)
- Starlette (FastAPI 的底层)
- Django(通过 ASGI)
- 自定义的 ASGI 应用
总结
uvicorn
就是 Python 世界里的 Nginx + Node.js 的node server.js
的结合体 —— 负责让你写的 Web 应用真正跑起来、对外服务。