我想使用 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()
最佳答案
我认为 DebuggedApplication 中间件试图实现与 use_debugger=True
相同的效果,因此无需同时使用两者。问题在于 webapp2.WSGIApplication
在通过调试器中间件之前添加了自己的错误处理,从而禁止 werkzeug 调试器查看实际的异常。
我的解决方案是扩展 webapp2 提供的基本 WSGIApplication 以重新引发原始异常。它适用于 python 2.7,并且当且仅当在应用程序构造函数中将调试标志设置为 True
时才会传递异常。
class Application(webapp2.WSGIApplication):
def _internal_error(self, exception):
if self.debug:
raise
return super(Application, self)._internal_error(exception)
不确定这是最干净的方法,但它对我有用。
关于webapp2 - Werkzeug 和 WebApp2 - 调试显示和控制台不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10879702/