无法在Flask的生产服务器中启用调试模式

时间:2018-10-02 15:13:15

标签: python flask

我正在尝试在浏览器中启用调试模式,如下所示:

from werkzeug.debug import DebuggedApplication  

application = Flask(__name__)
app = application
application = DebuggedApplication(app, True)

但是它没有在我的生产服务器Apache中的mod_wsgi下启用调试模式。

我有什么问题吗?同样,export方法也不起作用。

1 个答案:

答案 0 :(得分:1)

DebuggedApplication()中间件仅在未捕获的异常到达时才起作用。 Flask在生产模式下会捕获所有异常,因此这些异常永远不会到达中间件。

您需要明确告知Flask不要使用以下命令捕获所有异常:

PROPAGATE_EXCEPTIONS = True

在您的配置中。来自relevant documenation

  

PROPAGATE_EXCEPTIONS

     

异常会重新引发,而不是由应用程序的错误处理程序处理。如果未设置,则启用TESTINGDEBUG时将隐式为true。

您可以先将其设置在app对象上,然后再将其包装在DebuggedApplication中间件中:

app = Flask(__name__)
app.config['PROPAGATE_EXCEPTIONS'] = True
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)

请注意,此 only 告诉Flask不再捕获所有异常。您可能还需要设置其他配置选项,例如PRESERVE_CONTEXT_ON_EXCEPTION,也可以仅使用app.debug = True启用调试模式。