1.基础用法
1 | from fastapi import FastAPI |
- 使用
fastapi run命令快速启动生产服务器1
fastapi run main.py
- 自动识别包含
__init__.py的Python包结构 - 默认绑定
0.0.0.0:8000地址,支持文档自动生成(/docs路径)
流程图:
graph TD
A[执行fastapi run] --> B[扫描项目结构]
B --> C{识别FastAPI实例}
C -->|成功| D[启动Uvicorn服务器]
C -->|失败| E[报错退出]
D --> F[监听HTTP请求]
2.ASGI服务器原理
2.1 核心组件
- Uvicorn:基于uvloop和httptools的高性能ASGI服务器,默认集成在FastAPI CLI中
- Gunicorn:进程管理器,配合Uvicorn Worker实现多进程部署
1
gunicorn main:app -k uvicorn.workers.UvicornWorker -w 4
- 支持WebSocket和HTTP/2协议,异步处理能力提升3倍
2.2 部署架构
graph LR
A[客户端] --> B[Gunicorn进程管理器]
B --> C[Uvicorn Worker 1]
B --> D[Uvicorn Worker 2]
C --> E[FastAPI应用]
D --> E
- 多Worker模式建议CPU核心数×2的进程配置
3.生产环境建议
进程管理:
- 使用Systemd或Supervisor保持服务常驻
- 配置自动重启策略应对进程崩溃
HTTPS配置:
1
uvicorn.run("main:app", ssl_keyfile="key.pem", ssl_certfile="cert.pem")
推荐Let’s Encrypt证书,每90天自动续期
性能监控:
- 启用Prometheus指标端点
- 配置日志分级(–log-level warning)
资源隔离:
1
2python -m venv /opt/venv
source /opt/venv/bin/activate使用虚拟环境避免依赖冲突
4.注意事项
- 开发模式(–reload)禁止用于生产环境
- 版本锁定示例:
fastapi>=0.68.0,<0.69.0 - 必须设置
X-Forwarded-For头获取真实客户端IP
测试命令示例:
1
2
3
4
5 # 开发环境热重载
fastapi dev main.py --port 8080
# 生产模式启动
fastapi run main.py --host 0.0.0.0 --port 80