【问题标题】:Flask Config File - 'DEBUG=True' Do NothingFlask 配置文件 - 'DEBUG=True' 什么都不做
【发布时间】:2018-02-04 09:41:58
【问题描述】:

我在一个名为“MyApp”的包中构建了一个大型烧瓶应用程序(完全如图所示:http://flask.pocoo.org/docs/0.12/patterns/packages/

根据 Flask 文档,调试模式应该启用以下功能:

  1. 它激活调试器
  2. 它会激活自动重新加载器
  3. 它在 Flask 应用程序上启用调试模式。

一开始我使用以下命令运行我的烧瓶应用程序,一切正常:

export FLASK_APP=MyApp
export FLASK_DEBUG=1 
flask run

然后我了解了设置配置系统的正确方法(包括调试模式)。 所以我创建了以下 config.py 文件:

class Config(object):
    DEBUG = False
    ...

class ProductionConfig(Config):
    ...

class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True
    ...

CONFIGS = {
    "development": DevelopmentConfig,
    "production": ProductionConfig,
    "default": DevelopmentConfig
}

在我的应用程序 __init__.py 文件中,我写道:

app = Flask(__name__)
config_name = os.getenv('FLASK_CONFIGURATION', 'default')
app.config.from_object(CONFIGS[config_name])

现在,要运行应用程序,我输入一个新命令:

export FLASK_APP=MyApp
export FLASK_CONFIGURATION=development 
flask run

很遗憾,这次调试模式根本没有激活..

没有激活调试器或自动重新加载器。 唯一改变的是app.debug 现在等于True

我不明白.. 看起来DEBUG = TRUE 工作不正常。

你知道为什么会这样吗?

【问题讨论】:

    标签: python debugging flask


    【解决方案1】:

    使用调试器运行与设置 DEBUG 配置不同。你必须两者都做。在开发模式下运行服务器会自动设置配置。通常,您应该依赖它而不是直接设置配置。

    您读到的“正确配置方式”是 a) 只是另一种方式,而不是“正确”方式,并且 b) 只设置配置,而不是 FLASK_ENVFLASK_DEBUG 环境变量,这就是控制服务器的调试模式。

    设置环境变量FLASK_ENV=development 告诉flask run 用调试器和重新加载器包装应用程序。 (app.run(debug=True) 做同样的事情,但不能设置 FLASK_ENV,它只有一个环境变量。flask run 命令现在是首选)。 app.debug 切换 Flask 应用程序中的一些内部行为,例如将错误传递给启用开发模式的交互式调试器。

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2015-08-25
      • 2015-12-12
      • 2021-06-29
      • 2019-10-19
      相关资源
      最近更新 更多