问题 在mod_wsgi下运行时激活Flask调试器


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

我将DEBUG,PROPAGATE_EXCEPTION和PRESERVE_CONTEXT_ON_EXCEPTION设置为True,但调试器仍未出现在异常上。


4095
2018-05-12 17:53


起源



答案:


如Flask文档中所述:

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

使用:

app.debug = True

在mod_wsgi下你不是在做app.run()。

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


9
2018-05-12 23:15



我只是说 app.debug = True 在我的.wsgi文件中,它仍然无法正常工作。我发现有效的是 from werkzeug.debug import DebuggedApplication  application = DebuggedApplication(app, True)。 - jd.
这是实现同样目标的长期方式。无法与您争论,因为您实际上并没有提供您在WSGI文件中实际拥有的内容,以查看您在设置app.debug时所执行的操作。 - Graham Dumpleton
从 flask.pocoo.org/docs/quickstart/#debug-mode “即使交互式调试器在分叉环境中不起作用(这使得它几乎不可能在生产服务器上使用),它仍然允许执行任意代码。这使它成为一个主要的安全风险,因此它绝不能用于生产机器“。对我来说意味着app.debug = True默认情况下不应该在mod_wsgi下工作 - kerma
并非所有mod_wsgi的执行模式都是多进程。守护进程模式的默认值是一个调试器可以正常工作的进程。 - Graham Dumpleton
在Apache上运行我的脚本作为CGI,@ jd的解决方案适合我,而普通app.debug没有 - Yuvi


答案:


如Flask文档中所述:

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

使用:

app.debug = True

在mod_wsgi下你不是在做app.run()。

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


9
2018-05-12 23:15



我只是说 app.debug = True 在我的.wsgi文件中,它仍然无法正常工作。我发现有效的是 from werkzeug.debug import DebuggedApplication  application = DebuggedApplication(app, True)。 - jd.
这是实现同样目标的长期方式。无法与您争论,因为您实际上并没有提供您在WSGI文件中实际拥有的内容,以查看您在设置app.debug时所执行的操作。 - Graham Dumpleton
从 flask.pocoo.org/docs/quickstart/#debug-mode “即使交互式调试器在分叉环境中不起作用(这使得它几乎不可能在生产服务器上使用),它仍然允许执行任意代码。这使它成为一个主要的安全风险,因此它绝不能用于生产机器“。对我来说意味着app.debug = True默认情况下不应该在mod_wsgi下工作 - kerma
并非所有mod_wsgi的执行模式都是多进程。守护进程模式的默认值是一个调试器可以正常工作的进程。 - Graham Dumpleton
在Apache上运行我的脚本作为CGI,@ jd的解决方案适合我,而普通app.debug没有 - Yuvi


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

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

这是@jd为我提供的工作。


4
2017-09-25 19:44