1

当我遇到我非常喜欢的Werkzeug Debugger时,我正在比较 CherryPy 和 Flask。让我感到惊奇的是:

是否可以将 Werkzeug 的调试器集成到 CherryPy 中?如果是这样:如何?

当我尝试自己集成它时,我得到了控制台工作(/console),但不是异常处理程序。

编辑: 似乎 CherryPy 在 Werkzeug 得到错误之前捕获并处理它们。

4

1 回答 1

3

在我的编辑中,我描述了 CherryPy 捕获了错误。在配置throw_errors中可以设置为True. 对我来说,设置cherrypy._cprequest.Request.throw_errors = True做到了这一点。整个代码是:

import cherrypy
from cherrypy import wsgiserver

from werkzeug.debug import DebuggedApplication

class Root(object):

    @cherrypy.expose
    def index(self):
        return "Hello World :)"

    @cherrypy.expose
    def page(self):
        # Error:
        return self.self.self.pas

cherrypy._cprequest.Request.throw_errors = True

app = cherrypy.Application(Root(), script_name=None, config=None)
app = DebuggedApplication(app, evalex=True)

d = wsgiserver.WSGIPathInfoDispatcher({'/': app})
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8080), d)
try:
    server.start()
except KeyboardInterrupt:
    server.stop()

我敢肯定,有更好的方法可以做到这一点,但我是 CherryPy 的新手,这个 hack 对我有用。

于 2012-08-22T11:59:00.553 回答