FastAPI是一个ASGI应用程序,因此生产部署使用ASGI服务器——通常是Uvicorn(通常由Gunicorn管理以支持多个worker),位于nginx等反向代理之后。容器化(Docker)是现代常见的做法。
生产服务器栈
bash
uvicorn main:app --reload
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -- 0.0.0.0:8000
Client → NGINX (reverse proxy: TLS, static files, load balancing)
→ GUNICORN (process manager) → UVICORN workers (run the ASGI app)
Multiple workers let FastAPI use multiple CPU cores (each worker = one process).
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "main:app", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000"]
容器将应用程序及其依赖项打包在一起,以便在各种环境中实现一致的部署(然后在Kubernetes、ECS或Railway/Render/Fly等PaaS上运行)。
1. Config & secrets via environment variables (not in code); validate at startup
2. Multiple workers (Gunicorn + Uvicorn workers) for CPU utilization
3. HTTPS/TLS (at nginx or the platform/load balancer)
4. A real database (PostgreSQL) + connection pooling; run migrations (Alembic)
5. CORS configured to an allowlist (not "*") for browser clients
6. Logging + error monitoring (Sentry) + health-check endpoint
7. A separate worker service (Celery/ARQ) + broker (Redis) for background jobs
8. Horizontal scaling: multiple instances behind a load balancer — keep app STATELESS
(sessions/state in Redis, not process memory)
✓ Each worker runs its own event loop → workers give parallelism, async gives concurrency
✓ Keep the app STATELESS so you can run many instances behind a load balancer
正确部署FastAPI对于将应用程序投入生产至关重要,并且涉及特定于其ASGI性质的重要考虑事项,这与开发设置不同。
理解生产服务器栈是基础性的:开发服务器(uvicorn --reload)不适合生产,因此您通过ASGI服务器运行应用——由Gunicorn管理的Uvicorn worker用于多进程(利用所有CPU核心,因为每个worker运行自己的事件循环),通常位于nginx之后以实现TLS和负载均衡。**容器化(Docker)**是现代常见的方法,用于一致且便于移植的部署。
除了服务器设置外,生产检查清单涵盖与安全和可靠性相关的关键考虑事项:通过环境变量进行配置和密钥管理(永远不在代码中)、HTTPS、带有迁移和连接池的真实数据库、适当的CORS、日志记录和监控、用于后台任务的单独worker服务,以及——为了扩展——在负载均衡器后运行多个无状态实例(将状态保存在Redis中,而不是进程内存中)。
了解如何使用正确的ASGI服务器栈、容器化、多个worker和生产加固来部署FastAPI,这是重要的高级知识,因为每个真实的FastAPI应用程序都必须正确部署才能具有性能、安全和可扩展性——使这成为一个频繁相关、专业必需的主题,用于交付生产API。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠