FLASK_ENV
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")
关注公众号「Python之禅」,回复「1024」免费获取Python资源