为了账号安全,请及时绑定邮箱和手机立即绑定

微服务架构与FastAPI和poetry项目管理工具

在过去的几年中,pipenv和Makefile一直是我的最爱项目工具。不过最近,我开始用Poetry管理我的项目。

Poetry 是一个类似于 pipenv 的 Python 工具,帮助管理依赖和打包。

首先,我们需要Poetry已经在你的电脑上了。我这边的例子是使用Python 3.9在我的macOS上执行以下命令:

pip -V:  
pip 24.1.1 位于 /usr/local/lib/python3.9/site-packages/pip (Python 3.9)

我们将先将 pip 从 23.3.1 版本更新到 24.1.1 版本,更新完 pip 后再安装 Poetry:

    $ python3.9 -m pip install --upgrade pip  
    弃用警告:使用 distutils 配置文件配置安装方案已弃用,并且在未来即将不再工作。如果您使用的是 Homebrew 或 Linuxbrew Python,请参阅讨论 https://github.com/Homebrew/homebrew-core/issues/76621  
    要求已满足的条件:pip 在 /usr/local/lib/python3.9/site-packages (23.3.1)  
    正在收集 pip  
      下载 pip-24.1.1-py3-none-any.whl.metadata (3.6 kB)  
    正在下载 pip-24.1.1-py3-none-any.whl (1.8 MB)  
       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 13.4 MB/秒  
    正在安装收集到的包:pip  
      正在尝试卸载 pip  
        找到现有安装:pip 23.3.1  
        正在卸载 pip-23.3.1:  
          成功卸载 pip-23.3.1

我们先从安装Poetry开始:

    $ pip install poetry  
    正在安装 poetry  
      下载 poetry-1.8.3-py3-none-any.whl.metadata (6.8 kB)  
    安装成功:poetry-1.8.3, poetry-core-1.9.0, poetry-plugin-export-1.8.0

这次,我想基于FastAPI来做个项目。FastAPI是一个用于构建API的现代高性能框架。

使用FastAPI的关键特点包括:

  • 非常快 :就像 Node.jsGo 一样快
  • 快速编写 :加快编写功能的速度

关于Go、Node.js和Python(Flask、FastAPI、Django、Pyramid)的性能对比测试

FastAPI 的用例:

  • 微服务:使用 FastAPI 的高性能、低开销和异步功能,使其成为创建小型、专注和可扩展服务的绝佳选择。
  • 无服务器和云函数服务
  • SPA(单页应用程序)的后端
  • 与数据库和 ORM 的集成。最常用的 ORM 是 SQLAlchemy 和 Tortoise ORM,后者的设计灵感来自 Django ORM。

常见Python ORM的对比,来自Tortoise ORM网页

该项目可以使用命令行界面(CLI)构建,也可以使用你最喜欢的集成开发环境(IDE)进行开发。对我来说,我最喜欢的Python IDE是PyCharm,它可以直接创建一个可以直接使用的项目。

创建CLI项目

我们将先检查一下Poetry是否安装好了。

    poetry --version  
    Poetry 版本 1.8.3

要创建项目,只需执行该命令,然后按照交互式项目创建向导的指引。

    $ poetry init  

    该命令将引导您创建 pyproject.toml 配置文件。  

    包名 [patinflyfastapi]:  patinflyfastapi  
    版本 [0.1.0]:  0.1.0  
    描述 []:  
    作者 [TomasGiS <me@tomasgis.cat>] [n 跳过]:  TomasGiS <help.medium@tomasgis.cat>  
    许可 []:  
    兼容的 Python 版本 [^3.9]:  

    您是否想交互式地定义您的主要依赖项?(yes/no) [yes] yes  
    要添加或搜索的包(留空以跳过): fastapi  
    找到与 fastapi 匹配的 20 个包  
    显示前 10 个匹配项  

    输入要添加的包编号(或如果未列出则输入完整的包名)[]:  
     [ 0] fastapi  
    ...  
     > 0  
    输入所需的版本约束(留空以使用最新版本): ^0.111.0  

    添加一个包(留空以跳过): uvicorn  
    找到与 uvicorn 匹配的 20 个包  
    显示前 10 个匹配项  
    输入要添加的包编号(或如果未列出则输入完整的包名)[]:  
     [ 0] uvicorn  
     ...  
     > 0  
    输入所需的版本约束(留空以使用最新版本):  
    使用版本 ^0.30.1

之前的交互命令会询问你是否想要创建开发和主环境。如果你选择创建两个不同的环境,请根据需要进行选择。

以下是项目的基本信息
[tool.poetry]  
name = "patinflyfastapi"  
version = "0.1.0"  
description = ""  
authors = ["TomasGiS <help.medium@tomasgis.cat>"]  
readme = "README.md"  

项目依赖的库
[tool.poetry.dependencies]  
python = "^3.9"  
fastapi = "^0.111.0"  
uvicorn = "^0.30.1"  

开发依赖
[tool.poetry.group.dev.dependencies]  
fastapi = "^0.111.0"  
uvicorn = "^0.30.1"  

用于构建项目的工具
[build-system]  
requires = ["poetry-core"]  # 构建系统所需工具
build-backend = "poetry.core.masonry.api"  # 构建后端

之前的文件名为 pyproject.toml,它从 PEP 621 (2020年)起遵循官方的 toml 格式。

pyproject.toml 文件为基础的源代码树,该文件由 PEP 517 定义,并基于 PEP 518 扩展了该文件中的 [build-system] 表,新增了一个键。目前,pyproject.toml 文件由 PyPA(Python 包装权威组织)维护,最新的文档可以在 这里 查阅。

前面的例子分为4个部分:

  • [tool.poetry] 用于描述项目基本信息
  • [tool.poetry.dependencies],列出生产环境需要安装的依赖项。
  • [tool.poetry.dev.dependencies],列出开发环境需要安装的依赖项。
  • [build-system],包含配置 poetry 或其他构建工具的相关信息(或元数据)。

当然可以使用如下命令添加FastAPI和Uvicorn依赖或任何其他依赖。

例如,如果你想使用poetry添加fastapi和uvicorn[standard],你可以使用这个命令。

要表示简洁版本,可以这样表示:简版

poetry add fastapi==0.111.0

当然,你可以随时去掉项目里的任何依赖。

    poetry remove fastapi  # 在Poetry中移除fastapi包  
    poetry remove -dev fastapi  # 在Poetry中移除带-dev标记的fastapi包

在创建了满足最低要求的项目之后,现在我们可以添加一些更多需求以便在开发环境中运行代码测试。

    poetry add --group dev coverage flake8 mypy pylint

下一步就是运行我们刚建好的环境。

    $ poetry shell  
    正在创建虚拟环境 patinflyfastapi-9VT-DdIv-py3.9  
    在 /Users/TomasGiS/Library/Caches/pypoetry/virtualenvs/patinflyfastapi-9VT-DdIv-py3.9 中启动 shell  
    emulate bash -c '. /Users/TomasGiS/Library/Caches/pypoetry/virtualenvs/patinflyfastapi-9VT-DdIv-py3.9/bin/activate'  
    虚拟环境已激活: /Users/TomasGiS/Library/Caches/pypoetry/virtualenvs/patinflyfastapi-9VT-DdIv-py3.9

创建PyCharm项目

PyCharm 是由 jetbrains 创建的一款用于 Web 开发和数据科学的 IDE。主要的工具允许根据以下内容创建项目,

和其它 IDE 类似,PyCharm 自带了一系列工具,并且还可以通过插件来扩展 IDE 的功能性和工具。

让我们基于FastAPI,并使用poetry工具进行项目管理,创建一个新的项目叫做PatinflyFastAPI。

在 PyCharm 中创建项目

通过 CLI 命令,你可以创建名为 pyproject.toml 的项目配置文件,这个文件使用 toml 格式。

当使用 PyCharm 向导创建项目时,它将生成配置文件和一个简单的示例:

最后一个步骤是运行FastAPI。如下,我在PyCharm里运行了HTTP请求测试:

参考的资料

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消