Python
- 基础
-
库
- 其他
- argparse命令行参数解析
- asyncio自带异步编程库
- aiofiles异步文件读写库
- beautifulsoup4_HTML_XML解析库
- colorama_在终端输出漂亮的字
- datasets数据集处理
- html2text
- httpx_HTTP请求库
- litellm
- loguru日志库
- numpy科学计算基础库
- pillow图像处理
- pydantic数据验证
- pyyaml
- requests_HTTP请求库
- tenacity重试
- tiktoken计算Token量
- torch机器学习_深度学习框架
- tomli TOML文件解析库
- tomllib 自带TOML文件解析库
- unidiff_文本_文件差异对比
- uvicorn_Web服务器
- langchain
**uvicorn 是一个基于 Python 的 ASGI 服务器,用于运行基于 ASGI 标准的异步 Web 应用程序,例如使用 FastAPI 或 Starlette 编写的 Web 服务。**
---
## 一、uvicorn 是什么?(简单理解)
- uvicorn 是一个 **Web 服务器**,它负责接收 HTTP 请求,把请求交给你的 Python Web 应用程序处理,然后再把应用程序的响应返回给客户端(比如浏览器或 API 调用方)。
- 它专门运行 **ASGI(Asynchronous Server Gateway Interface)** 标准的应用,而不是传统的 WSGI(用于 Flask/Django 等同步框架)。
- uvicorn **性能很高**,因为它底层使用了 **uvloop(一个快速的 asyncio 事件循环)和 httptools(高性能 HTTP 解析器)**。
- 它通常用来运行像 **FastAPI、Starlette** 这样的现代异步 Python Web 框架。
---
## 二、uvicorn 解决什么问题?
当你用 **FastAPI、Starlette** 等异步 Web 框架写了一个 Web 应用后,**这个应用本身不能直接对外提供 HTTP 服务**,它需要一个 **Web 服务器** 来监听端口、接收请求、并调用你的应用代码。
uvicorn 就是这样一个服务器,它的特点是:
| 需求 | uvicorn 的作用 |
|------|----------------|
| 运行异步 Web 应用(如 FastAPI) | 支持 ASGI 标准,能高效运行异步框架 |
| 高并发、高性能 | 基于 asyncio 和 uvloop,性能接近 Node.js 和 Go |
| 开发便利 | 支持热重载、自动重载,适合开发和生产部署 |
| 轻量级、现代化 | 专为现代 Python 异步生态设计 |
---
## 三、安装 uvicorn
使用 pip 安装:
```bash
pip install uvicorn
```
如果你的项目使用 FastAPI,通常会一并安装:
```bash
pip install fastapi uvicorn
```
---
## 四、uvicorn 基本使用示例
### 示例:运行一个 FastAPI 应用
假设你有一个 FastAPI 应用,代码保存在 `main.py` 中:
```python
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, Uvicorn!"}
```
你可以使用 uvicorn 启动这个应用:
```bash
uvicorn main:app --reload
```
🔍 参数解释:
- `main`: 是你的 Python 文件名(不含 `.py`)
- `app`: 是 FastAPI 实例的变量名(即 `app = FastAPI()` 中的 `app`)
- `--reload`: 开发时使用,代码修改后自动重启服务器(不要用于生产环境)
访问 http://127.0.0.1:8000 就可以看到返回的 JSON 数据。
---
## 五、uvicorn 常用命令行参数
| 参数 | 说明 |
|------|------|
| `--host 0.0.0.0` | 监听所有网络接口,允许外部访问 |
| `--port 8000` | 指定服务端口,默认是 8000 |
| `--reload` | 开发模式,代码变动时自动重启(仅开发用) |
| `--workers 4` | 指定工作进程数,用于生产环境多进程运行 |
| `--log-level info` | 设置日志级别(debug, info, warning, error, critical) |
---
## 六、生产环境部署
虽然可以直接用 uvicorn 启动服务,但在生产环境中,通常建议:
- 使用 **uvicorn + Gunicorn**(Gunicorn 作为进程管理,uvicorn 作为 worker)
- 或者使用 **uvicorn 自身多 worker 模式**(如 `--workers 4`)
- 结合 **Nginx** 做反向代理和负载均衡
例如,使用 Gunicorn 启动多个 uvicorn worker:
```bash
gunicorn -k uvicorn.workers.UvicornWorker main:app
```
---
## 七、总结(中文)
> **uvicorn 是一个高性能的 ASGI 服务器,用于运行现代化的异步 Python Web 应用(如 FastAPI、Starlette)。它基于 asyncio 和 uvloop,具有出色的性能表现,支持开发模式热重载,广泛用于开发和生产环境。**
---
✅ **简单来说:**
> 如果你用 **FastAPI** 或其它 ASGI 框架写 Web 应用,**uvicorn 就是你用来启动和运行这个应用的 Web 服务器,它让您的应用可以通过 HTTP 提供服务,支持高并发,非常适合现代 Python Web 开发。**