0%

FastAPI自学教程(80) - 手动部署指南

1.基础用法

1
2
3
4
5
6
7
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
return {"message": "Hello World"}
  • 使用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.生产环境建议

  1. 进程管理

    • 使用Systemd或Supervisor保持服务常驻
    • 配置自动重启策略应对进程崩溃
  2. HTTPS配置

    1
    uvicorn.run("main:app", ssl_keyfile="key.pem", ssl_certfile="cert.pem")

    推荐Let’s Encrypt证书,每90天自动续期

  3. 性能监控

    • 启用Prometheus指标端点
    • 配置日志分级(–log-level warning)
  4. 资源隔离

    1
    2
    python -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