当我遇到我非常喜欢的Werkzeug Debugger时,我正在比较 CherryPy 和 Flask。让我感到惊奇的是:
是否可以将 Werkzeug 的调试器集成到 CherryPy 中?如果是这样:如何?
当我尝试自己集成它时,我得到了控制台工作(/console
),但不是异常处理程序。
编辑: 似乎 CherryPy 在 Werkzeug 得到错误之前捕获并处理它们。
当我遇到我非常喜欢的Werkzeug Debugger时,我正在比较 CherryPy 和 Flask。让我感到惊奇的是:
是否可以将 Werkzeug 的调试器集成到 CherryPy 中?如果是这样:如何?
当我尝试自己集成它时,我得到了控制台工作(/console
),但不是异常处理程序。
编辑: 似乎 CherryPy 在 Werkzeug 得到错误之前捕获并处理它们。
在我的编辑中,我描述了 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 对我有用。