我想使用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()
答案 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)
不确定这是最干净的方法,但它对我有用。