Flask 环境变量 FLASK_ENV 说明

By 刘志军, 2019-05-23, 分类: qa

flask

FLASK_ENV

FLASK_ENV 用来告诉Flask当前应用所运行的环境,有两个值,分别是 “production” 和 “development”,默认缺省值是“production”。Flask自身和第三方扩展插件可能会基于此变量值改变自己的行为。如果是“development”,Flask 会开启调试模式,代码变更时会自动重启,适合在开发的过程设置。

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 来开启调试,开启调试模式与不开启调试在网页上看到的区别是这样的:

微信截图_20190523191122.png

开启调试模式:

微信截图_20190523191219.png

在正式环境我们是严格要求关闭调试模式。

FLASK 的实例 app 有个config 的配置属性,所有配置都存在config中,config 其实是一个字典类型的对象,其中有两个配置项是 DEBUGENV,对应的是环境变量 FLASK_DEBUGFLASK_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资源

python之禅

猜你喜欢

2019-05-13
如何在非 Web 环境运行 Flask 关联的代码
2018-08-29
推荐一些Flask资源
2019-05-23
Flask 环境变量 FLASK_APP 说明