跳到主要内容

FastAPI

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。具有以下特性:

  • 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。

本节介绍使用多种方式在云托管(容器型)部署 FastAPI 应用:

  1. 一键从模版部署
  2. 使用 Dockerfile 部署

新建 FastAPI 项目

NOTE: 如果已经存在 FastAPI 项目,可以跳过该阶段。

  1. 新建一个 fastapi-app 目录
  2. 在 fastapi-app 目录中,新建一个 app.py 文件,内容如下:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
return {"greeting": "Hello, World!", "message": "Welcome to FastAPI!"}

这个 app.py 文件定义了一个 FastAPI 应用,它包含一个根路径("/")和一个 GET 请求处理函数(root)。当用户访问根路径时,应用会返回一个包含问候语和欢迎信息的 JSON 响应。

  1. 在 fastapi-app 目录中,新建一个 requirements.txt 文件,内容如下:
fastapi==0.100.0
hypercorn==0.14.4

这个 requirements.txt 文件定义了 FastAPI 应用所需的依赖项。其中 hypercorn 是 FastAPI 运行时需要的 ASGI 服务器。

  1. 安装依赖启动服务

使用 pip 安装依赖:

pip install -r requirements.txt

推荐使用虚拟环境安装依赖:

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

安装完成后,使用 hypercorn 启动服务:

hypercorn main:app --bind 0.0.0.0:80

访问http://127.0.0.1:80即可返回相应结果。

在开发阶段,还可以使用 fastapi-cli 启动服务:

首先安装 fastapi-cli:

pip install fastapi-cli

然后启动服务:

fastapi dev main.py

使用 FastAPI 模版一键部署

  1. 前往 云开发控制台
  2. 在左侧导航栏选择【云托管】,在【服务列表】页面点击【创建服务】,选择【FastAPI 模版】,按照提示填写服务名称,即可创建并部署一个 FastAPI 应用。

NOTE: 获取模板源码

使用 Dockerfile 部署

在 fastapi-app 目录中,新建一个 Dockerfile 文件,内容如下:

FROM python:3-alpine

# 设定当前的工作目录
WORKDIR /app

# 拷贝当前项目到容器中
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 启动服务
CMD ["hypercorn", "main:app", "--bind", "0.0.0.0:80"]

部署调试

推荐使用 云托管 CLI 进行部署。

安装云托管 CLI 后,进入项目根目录,执行以下命令:

# 登录
tcb login
# 部署容器型云托管实例
tcb cloudrun deploy

实例部署完成以后,前往 云开发控制台

在左侧导航栏选择【云托管】, 在【服务列表】页面可以找到刚刚部署的实例,点击进入【服务详情】页面,在详情页可以找到默认域名, 访问该域名即可返回相应结果。