程序加载配置

在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:

  1. 从配置对象中加载(常用)
    app.config.from_object()
  2. 从配置文件中加载
    app.config.from_pyfile()
  3. 从环境变量中加载(了解)
    app.config.from_envvar()

    以下演练以设置应用程序的 DEBUG(调试模式) 为例,设置应用为调式模式这后,可以实现以下功能: 程序代码修改后可以自动重启服务器 在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印

使用方式

1. 从配置对象中加载,创建配置的类

配置对象,里面定义需要给 APP 添加的一系列配置

  1. class Config(object):
  2. '''
  3. 所有的配置项目都需要大写
  4. '''
  5. SECRET_KEY= "sdfadsfaskdfoiquwrei"
  6. DEBUG = True
  7. # 设置配置类
  8. app.config.from_object(Config)
  9. # 读取 打印
  10. @app.route("/")
  11. def index():
  12. print(app.config['SECRET_KEY'])
  13. return "Hello world!"

2. 从配置文件中加载配置

app.config.from_pyfile('config.py')

3. 环境变量(了解)
  1. export 变量名=变量值
  2. echo $变量名

app.config.from_envvar('FLASKCONFIG')
读取配置app.config.get()
在视图函数中使用 current_app.config.get()

4. app.run的参数

可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host="0.0.0.0", port=5000, debug = True)

新式的Flask运行方式

  1. (venv) Flask export FLASK_APP=HelloWorld
  2. (venv) Flask flask run
  3. * Serving Flask app 'HelloWorld' (lazy loading)
  4. * Environment: production
  5. WARNING: This is a development server. Do not use it in a production deployment.
  6. Use a production WSGI server instead.
  7. * Debug mode: off
  8. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) (venv) Flask export FLASK_ENV=development
  9. (venv) Flask flask run
  10. * Serving Flask app 'HelloWorld' (lazy loading)
  11. * Environment: development
  12. * Debug mode: on
  13. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
  14. * Restarting with stat
  15. * Debugger is active!
  16. * Debugger PIN: 698-047-949

Flask_Script

Flask插件,可以自定义脚本,主要功能是添加命令行参数。
https://flask-script.readthedocs.io/en/latest/

  • 安装
    • pip install flask_scripts
  • 初始化
    • 使用app构建Manager对象
  • 调用
    • runserver
      • -d //debuge
      • -r //reload
      • -p //port
      • -h //host
      • —threaded
    • shell
      1. from flask_script import Manager
      2. from apps import create_app
      3. app = create_app()
      4. manager = Manager(app) # 给app套了一个壳子
      5. if __name__=='__main__':
      6. manager.run()
      命令启动方式
      1. python app.py runserver --help
      2. python app.py runserver -h 0.0.0.0 -p 8888 -d