3

我想将 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()
4

1 回答 1

0

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

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

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

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

于 2014-01-10T08:20:41.933 回答