# pyAutoFlaskBackend **Repository Path**: Yogurt_cry/pyAutoFlaskBackend ## Basic Information - **Project Name**: pyAutoFlaskBackend - **Description**: 这是一个用 C# 编写的用于自动创建 Tornado + Flask 的后端项目目录的控制台小工具。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-12 - **Last Updated**: 2022-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pyAutoFlaskBackend ### 1 介绍 ![image-20210717092530263](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717092530263.png)   这是一个用 C# 编写的用于自动创建 Tornado + Flask 的后端项目目录的控制台小工具。 #### 1.1 立项原因   由于日常的后端开发工作中已经有了一定的设计标准和格式,每次都要手动创建和配置各种基础信息。一方面由于创建的频率不高,容易导致每次创建的文件目录很难保证统一;另一方面不同的人根据创建要求创建出来文件目录也会有所不同。这两个方面都会容易导致后期在排查相关 bug 的时候造成一定的困扰。   同时,参考了 VueJS 和微信小程序的前端文件目录,结合自身的使用场景和综合考虑,对文件目录进行了针对性的设计。 #### 1.2 解决问题 - 解决创建的后端项目文件目录的统一性和标准化 ### 2 文件目录说明 > 文件目录的示例在 Demo 文件夹中,通过控制台工具创建的目录基本框架与 Demo 无异,只有配置文件内容的差异 ``` projectName ┣━ App # 主程序 ┃ ┣━ Configs # 主程序 - 配置文件夹 ┃ ┃ ┗━ __init__.py ┃ ┣━ Functions # 主程序 - 公共函数文件夹 ┃ ┃ ┗━ __init__.py ┃ ┣━ Interfaces # 主程序 - Api 接口文件夹 ┃ ┃ ┣━ A01Login # 主程序 - Api 接口示例 ┃ ┃ ┃ ┣━ __init__.py # Api 接口 ┃ ┃ ┃ ┣━ Func.py # Api 函数 ┃ ┃ ┃ ┗━ Sql.py # Api Sql 语句 ┃ ┃ ┗━ __init__.py ┃ ┣━ Modules # 主程序 - 公共模块 ┃ ┃ ┗━ __init__.py ┃ ┣━ Schedules # 主程序 - 计划任务 ┃ ┃ ┗━ __init__.py ┃ ┗━ Static # 主程序 - 静态资源 ┃ ┃ ┣━ Cache # 主程序 - 静态资源 - 缓存文件 ┃ ┃ ┃ ┗━ __init__.py ┃ ┃ ┣━ Files # 主程序 - 静态资源 - 文件/文件模板 ┃ ┃ ┃ ┗━ __init__.py ┃ ┃ ┣━ Images # 主程序 - 静态资源 - 图片 ┃ ┃ ┃ ┗━ __init__.py ┃ ┃ ┗━ __init__.py ┣━ Docs # 开发文档 ┃ ┗━ __init__.py ┣━ Logs # 运行日志 ┃ ┣━ Running # 运行日志 - 系统运行日志 ┃ ┃ ┗━ __init__.py ┃ ┣━ Schedule # 运行日志 - 计划任务日志 ┃ ┃ ┗━ __init__.py ┃ ┗━ __init__.py ┣━ Private_Library.py # 私有引用 ┣━ Public_Library.py # 公有引用 ┣━ server_local_schedule.py # 启动计划任务服务 ┣━ server_web_main.py # 启动生产环境服务 ┗━ server_web_test.py # 启动测试环境服务 ``` ### 3 开发环境 | 信息 | 说明 | | -------------- | ----------------------------------------------- | | 系统版本 | Microsoft Windows 10 专业工作站 10.0.19042 64位 | | Python 版本 | 3.8.3 | | .Net Framework | 4.7.2 | ### 4 支持版本 ![Python3.8+](https://img.shields.io/badge/Python-3.8%2B-blue) ![.Net Framework4.7.2](https://img.shields.io/badge/.NET%20Framework-4.7.2-blue) > 开发环境是 Python 3.8.3,理论上应该可以支持 Python 3 所有版本。 > 开发环境是 Windows 10 工作站版,理论上 Windows 10 的 .NET Framework 应该是默认支持的。 ### 5 如何使用 #### 5.1 安装 ##### Step 1 下载发行版 pyAutoFlaskBackend v1.0 ![image-20210717103047404](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717103047404.png) ##### Step 2 执行安装程序 ![image-20210717103639449](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717103639449.png) ![image-20210717104205018](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104205018.png) ![image-20210717104254692](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104254692.png) ![image-20210717104338560](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104338560.png) #### 5.2 卸载 ![image-20210717104543692](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104543692.png) ![image-20210717104656488](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104656488.png) ![image-20210717104718631](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/image-20210717104718631.png) #### 5.3 使用 ```shell cd 指定文件夹下 pyafb # 或者 pyafb.exe 亦可 ``` 根据提示创建项目 ![](https://gitee.com/Yogurt_cry/typora-pic-go/raw/master/GIF_2021_7_17_10_52_52.gif) ### 6 更多信息 其他更多信息详见项目注释(其实也没什么,只是用 C# 来生成一大堆文件而已) ### 7 其他说明   曾经有人跟 Yogurt 说:Tornado + Flask 不会觉得很奇怪么?Tornado 能做的事情,Flask 也能做,Tornado 做不了的事情,Flask 说不定也可以。当时 Yogurt 确实没有认真考虑过这个问题。一直以来都只是觉得 Tornado 是个比较高性能的 Web 服务器,Tornado + Flask 只不过是为了解决 Flask 的性能问题。而在设计这个项目文件目录的时候,认真的对比了一下两者的区别,然后就更加坚定了这种用法。   Tornado 确实是一个很强、性能很高的 Web 服务器,但在一些可能需要长期维护的地方写起来就比较麻烦。比如路由,感觉不太利于后期的维护。相反,Flask 在性能上感觉欠缺了一点,但集成的很多插件都很方便,更便于后期的维护。比如当前项目里所使用的蓝图插件(Blueprint),可以很快速的建立起后端的模块化,更便于后期 Api 接口的增减与维护。   当然,也许随着 Yogurt 的技术不断提升,说不定未来对 Tornado 的理解层次更深了之后,能够有更好的解决方案。不过目前,Tornado + Flask 是一个可以兼顾模块化、可维护、高性能的,不错的方案。