目录

fastapp

基于 starlette 的 web server demo。

Dependency

使用 fastapi

使用下面的命令安装依赖,带 fastapi-cli。

pip install fastapi[standard]

不使用 fastapi

去掉 fastapi 后只需要安装以下依赖包:

  • python-multipart
  • pydantic
  • pyyaml
  • starlette
  • uvicorn

注:

  • 项目的配置文件可选其他形式,如果不用 yaml 格式,可以不需要 pyyaml。推荐使用 toml 作为配置文件的格式。
  • uvicorn 在 linux 系统中运行还需要安装 uvloop,在 windows 系统中不需要。
  • 如果需要使用长链接,还需要安装 websocket。

结构

推荐目录结构:

project_dir/
├── config                         # 配置文件目录
│     ├── dev.yaml                 # 开发环境配置
│     └── prod.yaml                # 生产环境配置
├── src/fastapp
│         ├── __init__.py
│         ├── __version__.py       # 定义版本号
│         ├── main.py              # 入口
│         ├── config.py            # 配置
│         ├── middelware/          # 中间件
│         │   ├── __init__.py      # 定义基础组件或变量
│         │   ├── accesslog.py     # 定义系统访问日志中间件
│         │   └── trace.py         # 定义全局跟踪中间件
│         ├── model/               # 数据模型
│         │   ├── __init__.py      # 定义基础数据模型
│         │   ├── const.py         # 定义常量
│         │   └── ocr.py           # 定义业务数据模型
│         ├── router/              # 路由,URI 终点处理函数
│         │   ├── __init__.py
│         │   ├── users.py         # 每个业务单独封装在模块中,各模块间不建议互相引用
│         │   └── items.py
│         ├── service/             # 业务逻辑
│         │   ├── __init__.py
│         │   └── user_service.py
│         └── util/                # 工具函数
│             ├── __init__.py
│             └── httputil.py
├── pyproject.toml                 # 构建配置
├── tests/                         # 测试
├── requirements.txt
└── README.md                      # 项目说明文档

两个分支

fastapi 适合快速启动服务验证,在工程化改造时遇到了不少困难,新建了 starlette 分支,代码中仅使用 starlette 提供的组件进行开发部署。

运行

运行服务:

$ pip install -e .
$ python src/fastapp/main.py -c conf/dev.yaml

# 或者使用脚本直接运行
$ fastapp -c conf/dev.yaml

构建

使用 build 模块对项目进行发版部署

python -m build

注:发版前要修改 src/fastapp/__version__.py 中的版本号

关于
92.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号