简介

通常为了允许用户最终访问Web应用程序,我们会把代码部署到云服务器或云托管平台上。虽然有许多工具可以实现这一点,但在本文中,我们将介绍如何将 FastAPI 应用程序部署到 Vercel。

FastAPI 是一个现代且快速的 Python Web 框架,用于构建后端 API 应用程序。FastAPI 支持由 Swagger、安全模块和类型检查提供支持的 API 文档,以确保代码的正确性。

预备知识

  • python相关知识
  • 了解git的基本使用
  • 在Vercel官网注册账户

构建一个简单的fastapi程序

1
2
3
4
5
6
7
8
9
10
11
12
# app.py
import uvicorn

from fastapi import FastAPI
from routers import account

app = FastAPI()

app.include_router(account.router)

if __name__ == '__main__':
uvicorn.run("app:app", host="0.0.0.0", port=8080, reload=True)
1
2
3
4
5
6
7
8
9
10
# routers/account.py
from fastapi import APIRouter

router = APIRouter()


@router.get('/login')
async def get_user(user_id: str):
# 处理获取用户信息的请求
return {"ID":user_id}

运行文件:app.py

1
$ python3 app.py
1
2
3
4
5
INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: Started reloader process [15452] using StatReload
INFO: Started server process [20232]
INFO: Waiting for application startup.
INFO: Application startup complete.

可以在浏览器上查看该应用程序。我们将使用浏览器来测试我们的应用程序端点。http://0.0.0.0:8080/login?user_id=IntoTheDark

得到如下结果:

1
{"ID":"IntoTheDark"}

将 FastAPI 应用程序部署到 Vercel

在本文中,我们将Web程序部署到 Vercel,如果没有安装 Vercel 命令行工具,可以通过运行以下命令来获取它:

1
npm i vercel -g

接下来,登录vercel:

1
vercel login

要部署到 Vercel,需要一个配置文件,在父目录中创建vercel.json并添加以下Json数据:

1
2
3
4
5
6
7
8
{
"builds": [
{"src": "/app.py", "use": "@vercel/python"}
],
"routes": [
{"src": "/(.*)", "dest": "app.py"}
]
}

在继续部署之前,让我们创建一个包含应用程序依赖项的文件:requirements.txt,该文件通过pipreqs库生成,安装方法如下:

1
pip install pipreqs

pipreqs 指定项目目录, 将项目所依赖组件写入“requirements.txt” 文件

1
pipreqs ./ --encoding=utf8
1
2
3
//requirements.txt
fastapi==0.95.0
uvicorn==0.21.1

配置和需求文件就绪后,让我们初始化 Vercel,在根目录中运行以下命令:

1
vc .

image-20230410204848774

登录Vercel网站校验

image-20230410205137744

image-20230410205156919