fastapi
项目简介
个人自用的 fastapi 项目基础模板集成很多自己常用的服务器基础功能,上手即用,所有集成功能开关都集成到 config 中,一键开启。
技术依赖
- 包管理:pwd
- 接口文档:mkdocs+ swagger UI
集成功能
集成中间件
- gzip
- 一键跨域
- 定时任务
- 基于
asyncio
的原生装饰器方式 -
fastapi-gino-arq-uvicorn
-
apscheduler
-
Celery
- 基于
数据库操作
- redis
- mongodb
- mysql
文件上传
- 根据文件类型自动分类(类型 >上传日期 > 文件名)
- 小文件上传,直接通过内存接收整个文件
- 大文件上传,以流的形式接收文件,每次指定大小
离线的
swagger-ui
静态服务器
日志系统
- 基于 logging
- 基于 loguru
其他功能
- 基于 ini 配置文件
- 所有集成的功能都带一键开关
- 自动创建常用文件夹
目录结构
DIR:template-fastapi #
|-- dependencies/ # 「dependencies」
| `-- __init__.py #
|-- docs/ # 「docs」存放说明相关的文件
| |-- __init__.py #
| `-- description.py #
|-- events/ # 「events」事件层
| |-- __init__.py #
| |-- startup.py # 所有startup事件汇总的入口文件
| `-- config_check.py # 检查config中所有key为*_path结尾的目录是否存在,自动创建对应目录
|-- internal/ # 「internal」
| `-- __init__.py #
|-- middleware/ # 「middleware」中间件层,常用的中间件
| |-- logger.py #
| |-- gzip.py #
| `-- cors.py #
|-- routers/ # 「routers」路由层
| |-- v1/ # 「v1」如果是定制
| | `-- __init__.py #
| |-- __init__.py #
| |-- upload_router_template.py #
| |-- upload.py #
| |-- test.py #
| |-- static.py #
| `-- docs.py #
|-- static/ # 「static」默认的静态文件目录,可以在config.py指定
| |-- swagger-ui.css #
| |-- swagger-ui-bundle.js #
| `-- redoc.standalone.js #
|-- test/ # 「test」测试
| `-- async_test.py #
|-- tools/ # 「tools」全局组件层
| |-- __init__.py #
| |-- uploader.py # 上传组件
| |-- test.py #
| `-- schedule.py # 定时组件
|-- utils/ # 「utils」
| `-- logger.py #
|-- __init__.py #
|-- Types.py # 一些全局类型存放
|-- tree.yaml # 项目结构文件
|-- test.py #
|-- requirements.txt #
|-- README #
|-- main.py #
|-- config.py # 「关键文件」所有配置
|-- config.ini # 「关键文件」
`-- .gitignore #
安装 | Install
# 安装cps-cli脚手架(个人自用)
npm i @mucpsing/cli -g
cps -h
cps -t fastapi <project_name>