【新增】使用setting文件判断是否处于开发/线上环境
This commit is contained in:
parent
0662a83cfe
commit
6c0f0bb72d
|
@ -133,3 +133,11 @@ dmypy.json
|
|||
/my_venv/
|
||||
/data/
|
||||
/conf/logs/
|
||||
/conf/dev.py
|
||||
/templates/test_index.html
|
||||
/templates/new.html
|
||||
/templates/test_refer.html
|
||||
/templates/test_base.html
|
||||
/templates/result.html
|
||||
/templates/test_sample.html
|
||||
/templates/404.html
|
||||
|
|
28
README.md
28
README.md
|
@ -39,6 +39,19 @@ http://39.100.3.165:8188/TextSummarization/
|
|||
[ipynb的地址]()
|
||||
|
||||
|
||||
## 本地&线上同步推进(后续优化)
|
||||
### 业务场景
|
||||
本地与线上的 Swagger API 文档的接口的地址是不同的,但都依赖同一个配置文件 **`app\config\setting.py`**。<br>
|
||||
而个人项目有着本地和线上同步,开发和测试同步的需求,会不断修改 **`app\config\setting.py`** 文件,无法用 **`.gitignore`** 做到忽略配置文件,本地和线上配置隔离的效果。
|
||||
|
||||
### 解决
|
||||
**`本地`** 和 **`线上`** 自动根据所处的环境(由 .gitignore 控制)不同,选择不同的配置文件。<br>
|
||||
那么, **`本地`** 可以比 **`线上`** 多了 **`app/config/dev.py`** 文件; 基于该文件的存在与否,可以用 **`if else`** 控制 **`app/config/`** 中配置输出。
|
||||
|
||||
### Demo
|
||||
1. `echo "/app/config/dev.py" >> .gitignore` # 追加 Git 忽略提交配置到 .gitignore
|
||||
2. 新建 **`app/config/dev.py`** 文件
|
||||
|
||||
|
||||
## Blueprint,分隔视图
|
||||
**当你的Flask项目膨胀到一定规模的时候, 全部都写到主入口之中。 一定需要按照模块进行拆分。 Blueprint(蓝图)就是这个时候需要使用的东西。**
|
||||
|
@ -129,7 +142,7 @@ conda常用命令
|
|||
- 或者创建虚拟环境安装
|
||||
|
||||
## linux部署指南
|
||||
**1. linux sh & nohup后台运行脚本**
|
||||
**1. linux sh & nohup后台运行python脚本**
|
||||
- 1)创建脚本vim run.sh
|
||||
- 2)填写内容并保存:nohup python3 -u run.py > nohup.log 2>&1 &
|
||||
- 3)运行:sh run.sh 或者 . run.sh
|
||||
|
@ -145,7 +158,7 @@ conda常用命令
|
|||
- & : 最后一个&, 是让该命令在后台执行。
|
||||
```
|
||||
|
||||
**2. 使用gunicorn 部署flask服务**
|
||||
**2. 使用gunicorn 部署flask服务** (个人项目推荐使用这个)
|
||||
- 1)创建脚本vim gunicorn.sh
|
||||
- 2)填写内容并保存:
|
||||
- conda activate just_do_it (在linux上创建好自己的环境,可选)
|
||||
|
@ -182,14 +195,19 @@ https://www.cnblogs.com/gaidy/p/9784919.html
|
|||
|
||||
https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux
|
||||
```
|
||||
**4. 使用flask + nginx + uwsgi**
|
||||
|
||||
**4. 使用flask + nginx + uwsgi** (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)
|
||||
- 针对用户访问量大的情况,具体参考下面的文章
|
||||
- https://blog.csdn.net/spark_csdn/article/details/80790929
|
||||
- https://www.cnblogs.com/Ray-liang/p/4173923.html
|
||||
- https://blog.csdn.net/daniel_ustc/article/details/9070357
|
||||
|
||||
**5. 使用flask + nginx + gunicorn**
|
||||
- 生产环境很多大公司采用这个方式的,后面有时间再研究
|
||||
**5. 使用flask + nginx + gunicorn** (大项目推荐使用这个)
|
||||
- 生产环境很多大公司采用这个方式的,故推荐这个
|
||||
- 因Flask 与 uWsgi 结合有许多难以处理的 bug,故推荐这个
|
||||
- [Flask + Gunicorn + Nginx 部署](https://www.cnblogs.com/Ray-liang/p/4837850.html)
|
||||
|
||||
|
||||
|
||||
## linux上杀死gunicorn的进程
|
||||
**方法一**
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
'''=================================================
|
||||
@IDE :PyCharm
|
||||
@Author :LuckyHuibo
|
||||
@Date :2019/10/22 14:45
|
||||
@Desc :
|
||||
## 本地&线上同步推进(后续优化)
|
||||
### 业务场景
|
||||
本地与线上的 Swagger API 文档的接口的地址是不同的,但都依赖同一个配置文件 **`app\config\setting.py`**。<br>
|
||||
而个人项目有着本地和线上同步,开发和测试同步的需求,会不断修改 **`app\config\setting.py`** 文件,无法用 **`.gitignore`** 做到忽略配置文件,本地和线上配置隔离的效果。
|
||||
|
||||
### 解决
|
||||
**`本地`** 和 **`线上`** 自动根据所处的环境(由 .gitignore 控制)不同,选择不同的配置文件。<br>
|
||||
那么, **`本地`** 可以比 **`线上`** 多了 **`app/config/dev.py`** 文件; 基于该文件的存在与否,可以用 **`if else`** 控制 **`app/config/`** 中配置输出。
|
||||
|
||||
### Demo
|
||||
1. `echo "/app/config/dev.py" >> .gitignore` # 追加 Git 忽略提交配置到 .gitignore
|
||||
2. 新建 **`app/config/dev.py`** 文件
|
||||
|
||||
=================================================='''
|
||||
import os
|
||||
|
||||
is_dev_mode = os.path.exists('./conf/dev.py') # 'development' & 'product' (开发环境 or 生产环境)
|
||||
|
||||
EXTERNAL_URL = 'server.mini-shop.ivinetrue.com' # 外部(云服务器)地址
|
||||
INTERNAL_URL = '0.0.0.0:8080' # 内部(本地)地址
|
||||
SERVER_URL = INTERNAL_URL if is_dev_mode else EXTERNAL_URL
|
||||
|
||||
EXTERNAL_SCHEMES = ["https", "http"] # 外部(云服务器)支持 https 和 http 协议
|
||||
INTERNAL_SCHEMES = ["http"] # 内部只支持http
|
||||
SERVER_SCHEMES = INTERNAL_SCHEMES if is_dev_mode else EXTERNAL_SCHEMES
|
||||
|
||||
IMG_PREFIX = SERVER_URL + '/static/images'
|
||||
UPLOAD_FOLDER = 'app/static/uploads'
|
||||
VERSION = "0.3.0" # 项目版本
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 在上一层的run.py文件,使用os.path.exists('./conf/dev.py')
|
||||
# 直接运行本运行测试,使用os.path.exists('./dev.py')
|
||||
print(is_dev_mode)
|
2
run.py
2
run.py
|
@ -21,6 +21,7 @@ from APP.SpeechExtraction.speech_blueprint import app_extraction
|
|||
from APP.TextSummarization.text_blueprint import app_summarization
|
||||
from os.path import abspath, dirname
|
||||
from conf.logConf import logger
|
||||
from conf.setting import is_dev_mode
|
||||
|
||||
app = Flask("__main__", static_folder='static', template_folder='templates')
|
||||
|
||||
|
@ -41,5 +42,6 @@ def index():
|
|||
if __name__ == "__main__":
|
||||
app.debug = True
|
||||
logger.info('项目运行,GO')
|
||||
logger.info('is_dev_mode:{}'.format(is_dev_mode))
|
||||
# main run
|
||||
app.run(host='0.0.0.0', port=8188)
|
||||
|
|
Loading…
Reference in New Issue