FLASK_ENV 变量用来告诉Flask当前应用所运行的环境,有两个值,分别是 “production” 和 “development”,默认缺省值是“production”。
Flask自身和第三方扩展插件可能会基于此变量值改变自己的行为。
如果设置为:“development”,那么可实现:
1、激活调试器。 2、激活自动重载。 3、打开 Flask 应用的调试模式。
只要项目中代码有发生变化,程序就会自动重启。 在开发调试过程中很有用,如果是production,每次还要手动重启。
D:\my>pipenv run flask run * Environment: development * Debug mode: on [2019-05-23 19:06:22,004] INFO in __init__: True * Restarting with stat [2019-05-23 19:06:23,812] INFO in __init__: True * Debugger is active! * Debugger PIN: 288-447-910 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)你也可以通过控制环境变量 FLASK_DEBUG=1 来开启调试,开启调试模式与不开启调试在网页上看到的区别是这样的:
开启调试模式:
在正式环境我们是严格要求关闭调试模式的。
FLASK 的实例 app 有个config 的配置属性,所有配置都存在config中,config 其实是一个字典类型的对象,其中有两个配置项是 DEBUG 和 ENV,对应的是环境变量 FLASK_DEBUG 和 FLASK_ENV 的值,默认情况他们两的值是:
'DEBUG': True, 'ENV': 'production',你在自己的程序中可以根据 DEBUG 的值来改变你的业务逻辑,例如如果DEBUG=1 就将 logger 的日志级别调整为 debug 模式等等。
这两个值的初始化可以从 flask/app.py 源码中看出来。
# app.py self.config = self.make_config(instance_relative_config) def make_config(self, instance_relative=False): defaults = dict(self.default_config) # 就是这两行 defaults["ENV"] = get_env() defaults["DEBUG"] = get_debug_flag() return self.config_class(root_path, defaults) # helpers.py def get_debug_flag(): """Get whether debug mode should be enabled for the app, indicated by the :envvar:`FLASK_DEBUG` environment variable. The default is ``True`` if :func:`.get_env` returns ``'development'``, or ``False`` otherwise. """ # 通过读取环境变量的值来决定 val = os.environ.get("FLASK_DEBUG") if not val: return get_env() == "development" return val.lower() not in ("0", "false", "no")