我正在尝试在浏览器中启用调试模式,如下所示:
from werkzeug.debug import DebuggedApplication
application = Flask(__name__)
app = application
application = DebuggedApplication(app, True)
但是它没有在我的生产服务器Apache中的mod_wsgi
下启用调试模式。
我有什么问题吗?同样,export
方法也不起作用。
答案 0 :(得分:1)
DebuggedApplication()
中间件仅在未捕获的异常到达时才起作用。
Flask在生产模式下会捕获所有异常,因此这些异常永远不会到达中间件。
您需要明确告知Flask不要使用以下命令捕获所有异常:
PROPAGATE_EXCEPTIONS = True
在您的配置中。来自relevant documenation:
PROPAGATE_EXCEPTIONS
异常会重新引发,而不是由应用程序的错误处理程序处理。如果未设置,则启用
TESTING
或DEBUG
时将隐式为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
启用调试模式。