Werkzeug和WebApp2 - 调试显示和控制台无法正常工作

时间:2012-06-04 10:17:12

标签: webapp2 werkzeug

我想使用Werkzeug作为本地开发服务器,并且无法使DebugApplication中间件按照文档 - Werkzeug Debugging工作。这有什么不对吗?

import webapp2 
from system import config 
from werkzeug.debug import DebuggedApplication 
from werkzeug.serving import run_simple

application = webapp2.WSGIApplication(routes=config.routes, debug=False, config=config.options)  
debugged_application = DebuggedApplication(application)

def main():
    run_simple('localhost', 4000, debugged_application, use_reloader=True, use_debugger=True, threaded=True)

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

我认为DebuggedApplication中间件尝试实现与use_debugger=True相同,因此不需要同时使用它们。问题是webapp2.WSGIApplication在通过调试器中间件之前添加了自己的错误处理,因此禁止werkzeug调试器查看实际的异常。

我的解决方案是扩展webapp2提供的基础WSGIApplication以重新引发原始异常。它适用于python 2.7,当且仅当在Application构造函数中将debug标志设置为True时才会传递异常。

class Application(webapp2.WSGIApplication):
    def _internal_error(self, exception):
        if self.debug:
            raise
        return super(Application, self)._internal_error(exception)

不确定这是最干净的方法,但它对我有用。