# python3-webframe **Repository Path**: brt2/python3-webframe ## Basic Information - **Project Name**: python3-webframe - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-05 - **Last Updated**: 2022-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python3 webframe collection 该项目是个人闲暇创建的一个小玩具,用于快速切换基于python3的web框架。例如,FastAPI等开发效率很高,自身集成了swagger便于前端协调同步开发。 该玩具项目,不具备稍微复杂一丢丢的项目的生产力,其生命周期一般在项目第一次演示后即结束。之后,如果项目需要继续,可以直接切换到具体的框架上进行开发。 尽管如此,实际生活中80%的项目是不具备二次演示和开发的机会,该项目还是值得在项目之初快速搭建一个后台API滴... ## 1. Try it ``` pip install -r requirements.txt cd test && python3 demo.py ``` ## 2. 切换框架 目前框架支持以下几类Python网络框架: + FastAPI: 自带swagger,开发效率高,适合快速开发迭代; + Bottle: 超轻量、稳定,适用于IOT环境; + Flask: 轻量、稳定、API优雅、文档完善,适用于生产环境(但需配合WSGI服务器); + Tornado: 轻量、高并发、稳定,且自带服务器,适用于生产部署; + Sanic: 高并发,且自带swagger和服务器,适用于下一代部署环境; 在使用时,通过以下方式进行Backend的切换: ``` webframe.set_backend("flask") # or "fastapi", "sanic", ... ``` ### 2.1 FastAPI的使用事项 FastAPI使用uvicorn启动服务,所以其传参与其他框架不同,`webframe.app_run()` 的第一个参数需要传递字符串`"main:app"`而不是app对象。 ### 2.2 Sanic的使用事项 Sanic的API与Flask略有不同,并没有提供全局的request对象,所以需要在api函数中传递`request`对象: ``` @app.get("/") def sayHello(r): return "Hello" ``` ## 3. 实际项目示例 参考 [https://gitee.com/brt2/flask-kitymind](https://gitee.com/brt2/flask-kitymind/tree/webframe/) 的 `webframe` 分支,目前支持flask/bottle两个后端框架切换。