# falskapi **Repository Path**: zwjmaxstudio/falskapi ## Basic Information - **Project Name**: falskapi - **Description**: 自动化的flask快速部署api - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-16 - **Last Updated**: 2024-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # 子系统脚手架 ## 关于运行环境的说明 1. 普通项目可以直接使用yard-base中的Dockerfile,有特殊需求的项目请自行修改Dockerfile中的镜像信息; 2. 开发环境推荐使用PyCharm作为IDE,运行项目如果报找不到src的错误,请在src上单击右键,选择设置为代码根目录即可 3. 如果没有使用IDE,可以把src目录添加到环境变量中(如果只是运行,可以忽略此步骤,直接按第4步执行) mac 添加环境变量 vi ~/bash profile 然后把src的绝对路径追加到PATH中即可; Windows: 同理,把src的绝对路径添加PATH中; 4. 快速运行脚手架 - 安装Python3.8 - 执行git clone ssh://git@10.10.8.64:9922/root/yard-base.git - cd yard-base - python src/runserver.py ## 概览 ### 从api-framework到yard-base 第一版脚手架称为api-framework,功能如其名,意为用于api开发的框架; 第二版脚手架称为yard-base,yard即庭院,base即基础。 从api-framework到yard-base主要做了如下变更。 - 重新整理目录结构,主要目录限定为bin、src、config、test、tmp; - 原来的Python 3.7.5 升级为Python 3.8.12; 原因:经常会用到pandas库,而pandas的某些功能对Python3.8以下支持不友好,而且Python3.8对协程支持更友好。 - 原来的Flask==1.1.2升级为Flask==2.0.2 - 把部分功能性代码从各个包中的``__init__.py``中迁移出来; - 添加自动注册路由和蓝图的功能; - 修改Docker镜像,新镜像基于官方python3.8-alpine3.15制作,镜像大小由原来的1.03G变为0.32G - 镜像内置脚手架所需环境,在没有特殊需求的情况下,完成镜像构建仅需3秒 - 优化数据库驱动型能,生成环境只采用mysqlclient,不再使用pymysql - 去掉framework中的DatetimeUtil.py,推荐使用Arrow,安装:pip install -U arrow ### 目录结构 ![image-20211216145105862](doc/image/Sipaster_image_structure.png) ### 生产环境、测试环境和开发环境的控制 prod:生产环境 dev:开发环境 test:测试环境,用于单元测试、预发测试。 ![image-20211216145414880](doc/image/Snipaste_prod_environment.png) ![image-20211216145609747](doc/image/Snipaste_dev_environment.png) ![image-20211216145813226](doc/image/Snipaste_pytest_unit_test_environment.png) ### requirement说明 requirements-dev.txt 是开发环境的依赖,特点是安装顺利。 requirements.txt 是生产环境的依赖,特点是性能高。 ### 开发服务器的运行方式 ```shell git clone ssh://git@10.10.8.64:9922/root/yard-default.git pip install -r requirements-dev.txt cd yard-default/src python runserver.py ``` ### Docker镜像说明 Dockerfile中所使用的镜像是harbor.airqualitychina.cn:2229/public/python3.8:flask-yard,330.88 MB python3.8:flask-yard镜像已经预装以下库: - Flask==2.0.2 - Flask-RESTful==0.3.9 - Flask-SQLAlchemy==2.5.1 - Flask-Cors==3.0.10 - mysqlclient==2.1.0 - gevent==21.12.0 - greenlet==1.1.2 - gunicorn==20.1.0 - PyYAML==6.0 - demjson==2.2.4 - jsonschema==4.2.1 - requests==2.26.0 - pytest==6.2.5 - pandas==1.4.1 镜像构建速度测试:仅需3秒左右。 ### 生产环境运行方式 生产环境使用Docker运行,数据库仅使用mysqlclient,不再支持pymysql,pymysql仅在开发环境中使用。 ### 在Docker容器中,对gunicorn进行管理 ```sh /data/deploy/bin # ls gunicorn.pid restart_gunicron start_gunicron stop_gunicron /data/deploy/bin # ``` start_gunicron: 启动gunicorn stop_gunicron: 关闭gunicorn restart_gunicron:重启gunicorn ### 如何执行单元测试 在项目根目录下,执行pytest即可。 ![执行单元测试](doc/image/Snipaste_pytest_unit_test.png) ## 快速上手 ### 如何处理前端的get请求 假如前端发送的get请求的方式有如下两种: 1)通过旧的json={}的形式: http://some-domain:9920/demo/json={"city":"beijing"}的get请求 2)把json放到body中 URL:http://some-domain:9920/demo 格式:application/json 请求方式:GET body: ```json { "city":"beijing" } ``` 后端代码: ```python class Demo(AbstractApi): def handle_get_request(self): return self.get_params() ``` 当前端发送请求时,将看到如下响应信息: ```json { "code": 2000, "msg": "访问成功", "result": { "city": "beijing" } } ``` ======= # falskapi #### 介绍 自动化的flask快速部署api #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) >>>>>>> 286ed35f43f28d771b5c94f15e35d6f8d10ef19e