Uvicorn安装与FastAPI项目部署搭建
Uvicorn 安装与 FastAPI 项目部署指南1. 安装 Uvicorn
Uvicorn 是一个轻量级的 ASGI 服务器,用于运行 FastAPI 应用。安装步骤如下:
使用 pip 安装
pip install uvicorn
可选:安装带有标准库异步支持的版本
pip install uvicorn# 或者 uvloop 和 httptools
# 或者更具体的安装
pip install uvicorn uvloop httptools
2. 创建 FastAPI 项目
初始化项目
mkdir myfastapi_project
cd myfastapi_project
python -m venv venv# 创建虚拟环境
source venv/bin/activate# Linux/Mac
# venv\Scripts\activate# Windows
安装 FastAPI
pip install fastapi
创建主应用文件
创建 main.py 文件,内容如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
3. 使用 Uvicorn 运行应用
开发模式运行
uvicorn main:app --reload
[*]main: main.py 文件 (不需要 .py 后缀)
[*]app: 在 main.py 文件中创建的 FastAPI 实例
[*]--reload: 启用代码更改自动重载 (仅开发使用)
生产环境运行
uvicorn main:app --host 0.0.0.0 --port 8000
[*]--host 0.0.0.0: 允许外部访问
[*]--port 8000: 指定端口
4. 生产环境部署选项
选项1: 使用 Gunicorn 作为进程管理器
pip install gunicorn
gunicorn -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000
选项2: 使用 Systemd 管理服务
创建 systemd 服务文件 /etc/systemd/system/fastapi_app.service:
Description=FastAPI Application
After=network.target
User=your_username
WorkingDirectory=/path/to/your/project
Environment="PATH=/path/to/your/project/venv/bin"
ExecStart=/path/to/your/project/venv/bin/gunicorn -k uvicorn.workers.UvicornWorker -w 4 -t 300 main:app
WantedBy=multi-user.target
然后启用服务:
sudo systemctl daemon-reload
sudo systemctl start fastapi_app
sudo systemctl enable fastapi_app
选项3: 使用 Docker 部署
创建 Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "-w", "4", "-t", "300", "main:app"]
# 或者直接使用 uvicorn (不推荐生产环境直接使用)
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
构建并运行:
docker build -t fastapi-app .
docker run -d -p 8000:8000 fastapi-app
5. 配置选项
Uvicorn 有许多有用的配置选项:
[]--workers: 指定工作进程数 (通常为 CPU 核心数 2 + 1)
[*]--timeout: 设置超时时间 (秒)
[*]--limit-concurrency: 限制并发连接数
[*]--backlog: 设置连接队列大小
[*]--log-level: 设置日志级别 (info, debug, warning, error)
6. 验证部署
访问以下端点验证应用是否正常运行:
[*]http://localhost:8000/ - 返回 "Hello World"
[*]http://localhost:8000/docs - 自动生成的交互式 API 文档
[*]http://localhost:8000/redoc - 另一种风格的 API 文档
通过以上步骤,您已经成功安装了 Uvicorn 并部署了一个基本的 FastAPI 应用。根据您的需求,可以选择适合的生产环境部署方式。
页:
[1]