在 Vercel 上部署 Python Flask 或 FastAPI 项目
Vercel 是一个广受欢迎的 Web 应用部署平台,以其简单性和无服务器架构而闻名。虽然它常用于部署像 Next.js 这样的前端框架,但 Vercel 也支持基于 Python 的后端框架,如 Flask 和 FastAPI。本文将指导您完成在 Vercel 上部署 Python Flask 或 FastAPI 项目的步骤,包括项目设置、配置和部署。
前提条件
在开始之前,请确保您具备以下条件:
- 一个 Vercel 账户(在 vercel.com 注册)。
- 一个准备好部署的 Flask 或 FastAPI 项目。
- 对 Python、Flask/FastAPI 和 Git 的基本了解。
- 已安装 Vercel CLI(运行
npm install -g vercel
)。 - 项目已托管在 Git 仓库中(例如 GitHub、GitLab 或 Bitbucket)。
步骤 1:准备您的 Flask/FastAPI 项目
要在 Vercel 上部署 Python 项目,您的应用必须适配 Vercel 的无服务器环境。以下是如何准备 Flask 或 FastAPI 项目。
Flask 项目示例
对于 Flask 项目,确保您的项目结构如下:
my-flask-app/
├── app.py
├── requirements.txt
├── vercel.json
app.py(示例 Flask 应用):
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return '来自 Vercel 上的 Flask 的问候!'
if __name__ == '__main__':
app.run()
FastAPI 项目示例
对于 FastAPI 项目,结构类似:
my-fastapi-app/
├── main.py
├── requirements.txt
├── vercel.json
main.py(示例 FastAPI 应用):
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
async def root():
return {'message': '来自 Vercel 上的 FastAPI 的问候!'}
依赖文件
创建一个 requirements.txt
文件,列出项目的依赖项:
# 对于 Flask
flask==2.3.2
gunicorn==20.1.0
# 对于 FastAPI
fastapi==0.95.1
uvicorn==0.21.1
Vercel 使用 gunicorn
作为 Flask 的 WSGI 服务器,使用 uvicorn
作为 FastAPI 的 ASGI 服务器,以在无服务器环境中处理请求。
步骤 2:配置 Vercel
Vercel 需要一个 vercel.json
配置文件来理解如何构建和部署您的 Python 项目。该文件指定了构建过程、路由和运行时设置。
Flask 的 Vercel 配置
在项目根目录创建 vercel.json
文件:
{
"version": 2,
"builds": [
{
"src": "app.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "app.py"
}
]
}
FastAPI 的 Vercel 配置
对于 FastAPI,vercel.json
文件因其 ASGI 特性略有不同:
{
"version": 2,
"builds": [
{
"src": "main.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "main.py"
}
]
}
vercel.json
说明
"version": 2
:指定 Vercel 配置版本。"builds"
:定义构建过程。这里我们使用@vercel/python
运行时来处理 Python 应用。"routes"
:将所有传入请求映射到您的应用文件(Flask 为app.py
,FastAPI 为main.py
)。
步骤 3:本地测试
在部署之前,先在本地测试您的应用以确保其正常运行。
对于 Flask:
pip install -r requirements.txt
gunicorn --bind 0.0.0.0:8000 app:app
对于 FastAPI:
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000
在浏览器中访问 http://localhost:8000
以验证应用是否运行正常。
步骤 4:部署到 Vercel
项目准备好后,您可以将其部署到 Vercel。
- 初始化 Git 仓库(如果尚未完成):
git init git add . git commit -m "初始提交"
- 推送到 Git 托管服务(如 GitHub):
git remote add origin <您的仓库地址> git push origin main
- 将 Vercel 链接到您的仓库:
- 使用 CLI 登录 Vercel:
vercel login
- 部署您的项目:
vercel
- 按照提示将项目链接到 Git 仓库或直接部署。Vercel 将检测 Python 运行时并使用
vercel.json
中的设置。
- 使用 CLI 登录 Vercel:
- 设置环境变量(如需要):
如果您的应用需要环境变量(例如 API 密钥),在 Vercel 仪表板的 设置 > 环境变量 中添加它们。 - 验证部署:
部署完成后,Vercel 会提供一个 URL(例如https://my-flask-app.vercel.app
)。访问该 URL 确认您的应用已上线。
步骤 5:持续部署
要启用持续部署,请将您的 Git 仓库连接到 Vercel:
- 在 Vercel 仪表板中,前往 新建项目 并导入您的仓库。
- 配置项目设置(Vercel 会自动检测
vercel.json
文件)。 - 推送到您的仓库,Vercel 将自动重新部署。
故障排除提示
- 构建错误:确保
requirements.txt
包含所有依赖项,并且@vercel/python
与您的 Python 版本兼容(Vercel 支持 Python 3.9+)。 - 路由问题:检查
vercel.json
中的routes
是否正确映射到您的应用入口点。 - 超时错误:Vercel 的无服务器函数有最大执行时间(Hobby 计划为 10 秒,Pro 计划为 60 秒)。优化您的应用以快速响应。
- 日志:在 Vercel 仪表板的 Functions > Logs 中查看部署日志以进行调试。
最佳实践
- 保持依赖最小化:在
requirements.txt
中仅包含必要的包,以减少构建时间。 - 使用环境变量:将敏感数据(例如数据库凭据)存储在 Vercel 的环境变量中。
- 优化无服务器环境:确保您的应用是无状态的,因为 Vercel 的无服务器环境不会在请求之间保留状态。
- 使用 Vercel CLI 本地测试:使用
vercel dev
模拟 Vercel 的本地环境。
结论
通过正确的配置,在 Vercel 上部署 Flask 或 FastAPI 项目非常简单。通过设置项目结构、创建 vercel.json
文件并使用 Vercel 的 CLI 或仪表板,您可以在几分钟内让您的 Python 后端上线。无论您是构建简单的 API 还是完整的 Web 应用,Vercel 的无服务器平台都提供了一个可扩展且无忧的部署解决方案。
祝您部署顺利!