使用使用Python FastAPI构建构建Web服务的实现服务的实现
FastAPI 是一个使用 Python 编写的 Web 框架,还应用了 Python asyncio 库中最新的优化。本文将会介绍如何搭建基于容器
的开发环境,还会展示如何使用 FastAPI 实现一个小型 Web 服务。
起步起步
我们将使用 Fedora 作为基础镜像来搭建开发环境,并使用 Dockerfile 为镜像注入 FastAPI、Uvicorn 和 aiofiles 这几个包。
FROM fedora:32
RUN dnf install -y python-pip \
&& dnf clean all \
&& pip install fastapi uvicorn aiofiles
WORKDIR /srv
CMD ["uvicorn", "main:app", "--reload"]
在工作目录下保存 Dockerfile 之后,执行 podman 命令构建容器镜像。
$ podman build -t fastapi .
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/fastapi latest 01e974cabe8b 18 seconds ago 326 MB
下面我们可以开始创建一个简单的 FastAPI 应用程序,并通过容器镜像运行。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello Fedora Magazine!"}
将上面的代码保存到 main.py 文件中,然后执行以下命令开始运行:
$ podman run --rm -v $PWD:/srv:z -p 8000:8000 --name fastapi -d fastapi
$ curl http://127.0.0.1:8000
{"message":"Hello Fedora Magazine!"
这样,一个基于 FastAPI 的 Web 服务就跑起来了。由于指定了 –reload 参数,一旦 main.py 文件发生了改变,整个应用都会
自动重新加载。你可以尝试将返回信息 “Hello Fedora Magazine!” 修改为其它内容,然后观察效果。
可以使用以下命令停止应用程序:
$ podman stop fastapi
构建一个小型构建一个小型 Web 服务服务
接下来我们会构建一个需要 I/O 操作的应用程序,通过这个应用程序,我们可以看到 FastAPI 自身的特点,以及它在性能上有
什么优势(可以在这里参考 FastAPI 和其它 Python Web 框架的对比)。为简单起见,我们直接使用 dnf history 命令的输出
来作为这个应用程序使用的数据。
首先将 dnf history 命令的输出保存到文件。
$ dnf history | tail --lines=+3 > history.txt
在上面的命令中,我们使用 tail 去除了 dnf history 输出内容中无用的表头信息。剩余的每一条 dnf 事务都包括了以下信息:
id:事务编号(每次运行一条新事务时该编号都会递增)
command:事务中运行的 dnf 命令
date:执行事务的日期和时间
然后修改 main.py 文件将相关的数据结构添加进去。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
评论0
最新资源