【问题标题】:Cannot enable debug mode in production server in Flask [duplicate]无法在 Flask 的生产服务器中启用调试模式 [重复]
【发布时间】:2018-10-02 15:13:14
【问题描述】:

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

from werkzeug.debug import DebuggedApplication  

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

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

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

【问题讨论】:

    标签: python flask


    【解决方案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 启用调试模式。

    【讨论】:

    • 这句话就像一个魅力谢谢! app.debug = True 我应该把它放在哪里以及如何工作?
    • @ΝικόλαοςΒέργος:在同一位置,而不是app.config['PROPAGATE_EXCEPTIONS'] = True。考虑到设置调试模式意味着启用模板重新加载以及异常处理的一些其他调试设置。
    • 它们到底有什么区别?另外你似乎很了解,我想问你是否也可以帮助我解决这个问题:stackoverflow.com/questions/52593499/…
    • @ΝικόλαοςΒέργος:PROPAGATE_EXCEPTIONS在设置app.debug时自动启用,但还有更多这样的设置。设置app.debug = True 一次性启用所有这些设置。
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2016-03-12
    • 2015-07-20
    相关资源
    最近更新 更多