From 5c84be89c1f65dff129f9f6525a6f5dc1d65cb20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8D=95=E9=A3=8E=E7=9A=84=E9=80=8D=E9=81=A5=E4=BE=AF?= Date: Wed, 28 Dec 2022 20:01:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0loguru=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .vscode/launch.json | 19 ++++++++ README.md | 39 +++++++++------ assets/20221228_195511_image.png | Bin 0 -> 791803 bytes main.py | 14 +++--- src/config/__init__.py | 28 +++++++++++ src/config/common_config.py | 19 ++++++++ src/config/config_data/app_config_dev.ini | 14 ++++++ src/config/log_config.py | 55 ++++++++++++++++++++++ {dao => src/dao}/__init__.py | 0 {dao => src/dao}/crud.py | 0 {dao => src/dao}/database.py | 0 {dao => src/dao}/models.py | 0 {dao => src/dao}/schemas.py | 0 dependencies.py => src/dependencies.py | 0 {routers => src/routers}/__init__.py | 0 {routers => src/routers}/items.py | 2 +- {routers => src/routers}/users.py | 4 +- src/webapp.py | 0 test/api/local.http | 2 +- 20 files changed, 173 insertions(+), 25 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 assets/20221228_195511_image.png create mode 100644 src/config/__init__.py create mode 100644 src/config/common_config.py create mode 100644 src/config/config_data/app_config_dev.ini create mode 100644 src/config/log_config.py rename {dao => src/dao}/__init__.py (100%) rename {dao => src/dao}/crud.py (100%) rename {dao => src/dao}/database.py (100%) rename {dao => src/dao}/models.py (100%) rename {dao => src/dao}/schemas.py (100%) rename dependencies.py => src/dependencies.py (100%) rename {routers => src/routers}/__init__.py (100%) rename {routers => src/routers}/items.py (97%) rename {routers => src/routers}/users.py (92%) create mode 100644 src/webapp.py diff --git a/.gitignore b/.gitignore index 85e7c1d..f4b55a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /.idea/ +*.pyc +*.log \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f84534d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python3: FastAPI", + "type": "python", + "request": "launch", + "module": "uvicorn", + "args": [ + "main:app" + ], + "jinja": true, + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index fe8e077..0e7e958 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ FASTAPI -=== +======= ![](https://img.shields.io/badge/Python-3.6%2B-green) @@ -14,8 +14,7 @@ FastAPI framework, high performance, easy to learn, fast to code, ready for prod 3. 数据库的插入操作 4. 全局异常处理 - -### +### Documentation: https://fastapi.tiangolo.com 中文文档:https://fastapi.tiangolo.com/zh/ @@ -24,13 +23,15 @@ Source Code: https://github.com/tiangolo/fastapi # 组件 -技术 | 说明 | 官网 -----|-----------------------------------------------------------------------------------------|---- -fastapi | web server | https://fastapi.tiangolo.com/ -uvicorn | web容器 | https://www.uvicorn.org/ - PySnooper| 调试,展示调用详情 | https://github.com/cool-RR/PySnooper -ujson | an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. | https://github.com/ultrajson/ultrajson -Pydantic | 基于标准的 Python 3.6 类型声明 | https://pydantic-docs.helpmanual.io/ + +| 技术 | 说明 | 官网 | +| ----------- | ----------------------------------------------------------------------------------------- | ---------------------------------------- | +| fastapi | web server | https://fastapi.tiangolo.com/ | +| uvicorn | web容器 | https://www.uvicorn.org/ | +| PySnooper | 调试,展示调用详情 | https://github.com/cool-RR/PySnooper | +| ujson | an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. | https://github.com/ultrajson/ultrajson | +| Pydantic | 基于标准的 Python 3.6 类型声明 | https://pydantic-docs.helpmanual.io/ | + ### 安装fastapi ```shell @@ -45,13 +46,14 @@ pip install fastapi pip install uvicorn ``` - - ### 运行程序 + 下面这种非常规启动程序与java的war包丢在tomcat里面一样。本质上差不多。而且效果可能更好,可以自动热重启。 + ```shell uvicorn main:app --reload ``` + ![](asset/img/run.png) #### 热重启 @@ -63,20 +65,21 @@ uvicorn main:app --reload #### main方法运行 下面这种与上面没有本质区别。 + ```python import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) ``` + [FastAPI 开始安装(创建第一个例子)多种运行方式](https://blog.csdn.net/qq_40815295/article/details/106896707) [官网提供这种运行方式](https://fastapi.tiangolo.com/zh/tutorial/debugging/) - ### 自带文档 Swagger UI : http://127.0.0.1:8000/docs#/ 或者 - + ReDoc : http://127.0.0.1:8000/redoc openapi:http://127.0.0.1:8000/openapi.json @@ -85,4 +88,10 @@ openapi:http://127.0.0.1:8000/openapi.json ![img.png](asset/img/img.png) -![img_1.png](asset/img/img_1.png) \ No newline at end of file +![img_1.png](asset/img/img_1.png) + + +# 日志文件跳转 + + +![](assets/20221228_195511_image.png) diff --git a/assets/20221228_195511_image.png b/assets/20221228_195511_image.png new file mode 100644 index 0000000000000000000000000000000000000000..06dc20783e035bc0bf1a2ca3f7e68cb50c771a75 GIT binary patch literal 791803 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