36 在云平台上部署FastAPI应用

在上一篇中,我们探讨了如何使用Docker来部署FastAPI应用。这种容器化的方法非常灵活,但如果你希望简化部署流程,或者希望利用云服务提供的可扩展性与高可用性,云平台部署将是一个极佳的选择。在本篇中,我们将详细讨论如何在云平台上部署FastAPI应用。

选择云平台

常见的云平台有很多,包括:

  • AWS(Amazon Web Services)
  • Google Cloud Platform(GCP)
  • Microsoft Azure
  • Heroku(适合快速部署)
  • DigitalOcean

对于本教程,我们将以 Heroku 为例,它非常友好且适合小型应用的快速部署。

第一步:准备FastAPI应用

假设我们之前已经有一个简单的FastAPI应用,代码如下:

1
2
3
4
5
6
7
8
9
10
11
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}

将以上代码保存为 main.py 文件。

第二步:创建依赖描述文件

在Heroku上运行Python应用需要一个依赖文件,通常为 requirements.txt 文件。你可以使用以下命令自动生成:

1
pip freeze > requirements.txt

确保 requirements.txt 文件中包含 fastapiuvicorn 这两个必要的库。例如:

1
2
fastapi==0.75.0
uvicorn==0.17.0

此外,我们需要定义一个 Procfile 文件,以告诉Heroku如何启动应用。创建一个名为 Procfile 的文件,内容如下:

1
web: uvicorn main:app --host 0.0.0.0 --port ${PORT:-5000}

在上面的命令中,main 是包含 FastAPI 应用的 Python 文件名(不带 .py 后缀),app 是 FastAPI 应用实例的名字。

第三步:创建Heroku账号并安装Heroku CLI

访问 Heroku官网 注册一个账户,并按以下步骤安装Heroku CLI:

  1. 下载并安装Heroku CLI:Heroku CLI下载链接
  2. 安装后,使用以下命令登录:
1
heroku login

第四步:创建Heroku应用

通过以下命令在 Heroku 上创建一个新的应用:

1
heroku create my-fastapi-app

my-fastapi-app 可以替换为你想要的任何应用名称,全局唯一。

第五步:部署FastAPI应用

接下来,我们将代码提交到Heroku。根据以下步骤操作:

  1. 初始化Git仓库(如果还未初始化):
1
git init
  1. 添加文件并提交:
1
2
git add .
git commit -m "Initial commit"
  1. 将Heroku远程仓库添加到本地Git:
1
heroku git:remote -a my-fastapi-app
  1. 推送代码到Heroku:
1
git push heroku master

在推送过程中,Heroku会自动检测到你的 requirements.txtProcfile,并会安装依赖。

第六步:访问你的应用

一旦部署完成,Heroku会提供应用的URL,可以通过以下命令获取:

1
heroku open

在浏览器中打开后,你应该能看到返回的 JSON 响应如:

1
{"Hello": "World"}

你也可以通过访问 /items/1?q=foo 来测试不同的API路由。

第七步:监控与日志

你可以通过以下命令查看Heroku上的实时日志,以监控应用的运行状况:

1
heroku logs --tail

小结

在本教程中,我们介绍了如何在云平台(以Heroku为例)上部署FastAPI应用。我们从创建FastAPI应用开始,经过创建必要的依赖文件,最终实现应用的部署和访问。这一过程展示了在云环境中快速上线应用的便利性,未来我们将讨论如何在其他云平台(如AWS、GCP等)上部署FastAPI应用。

36 在云平台上部署FastAPI应用

https://zglg.work/python-fastapi-zero/36/

作者

IT教程网(郭震)

发布于

2024-08-17

更新于

2024-08-18

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论