【问题标题】:Activating the Flask debugger when running under mod_wsgi在 mod_wsgi 下运行时激活 Flask 调试器
【发布时间】:2012-05-12 17:53:03
【问题描述】:

在 mod_wsgi 下运行时如何激活 Flask 调试器?

我将DEBUGPROPAGATE_EXCEPTIONPRESERVE_CONTEXT_ON_EXCEPTION 设置为True,但调试器仍然没有出现在异常中。

【问题讨论】:

    标签: mod-wsgi flask


    【解决方案1】:

    如 Flask 文档中所述:

    http://flask.pocoo.org/docs/quickstart/#debug-mode

    使用:

    app.debug = True
    

    在 mod_wsgi 下,您并没有执行 app.run()。

    确保您在全局范围内设置“app.debug”,而不是在检查 __name__ 是否为 __main__ 的条件部分中。

    【讨论】:

    • 我只是将app.debug = True 放在我的 .wsgi 文件中,但它仍然不起作用。我发现有效的是from werkzeug.debug import DebuggedApplicationapplication = DebuggedApplication(app, True)
    • 这是实现相同目标的长期方法。无法与您争论,因为您实际上并没有提供您在 WSGI 文件中实际拥有的内容来查看您在设置 app.debug 时做了什么。
    • 来自flask.pocoo.org/docs/quickstart/#debug-mode "即使交互式调试器在分叉环境中不起作用(这使得它几乎不可能在生产服务器上使用),它仍然允许执行任意代码。这使它成为重大安全风险,因此绝不能在生产机器上使用。”这对我来说意味着 app.debug=True 默认不应该在 mod_wsgi 下工作
    • 并不是所有mod_wsgi的执行模式都是多进程的。守护程序模式的默认设置是调试器可以正常工作的单个进程。
    • 在 Apache 上将我的脚本作为 CGI 运行,@jd 的解决方案对我有用,而普通 app.debug 没有
    【解决方案2】:

    您可以使用 werkzeug 提供的交互式调试器:

    from werkzeug.debug import DebuggedApplication application = DebuggedApplication(app, True)

    这是@jd 为我工作的earley 建议的。

    【讨论】:

    • @DanChaltiel 创建应用变量后,即在 app = Flask() 之类的代码之后
    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2015-11-15
    • 2016-09-10
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多