webapp2 - Werkzeug 和 WebApp2 - 调试显示和控制台不工作

标签 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()

最佳答案

我认为 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/

相关文章:

debugging - 如何在 Pycharm 中本地调试 Google App Engine Web 应用程序?

python - 通过 webapp2 访问 URI 参数

python - 如何将多个身份验证 ID(例如密码和电子邮件)传递给 "webApp2_extras"用户模型的 user_create 方法?

python - 如何比较 NDB 查询中的多个日期?

python - Twisted-Klein 服务器上的 HTTP 基本身份验证

flask - 如何按照 Flask/Werkzeug 路由的匹配顺序对它们进行排序?

python - 无法导入 flask ,因为 werkzeug

python - Webapp2 get_user_by_password 引发 TypeError : cannot concatenate 'str' and 'NoneType' objects

python - 在 Flask 中使用变量和 url_for 构建错误

python - Flask 日志记录错误 : "TypeError findCaller() takes from 1 to 2 position arguments but 3 were given" on app. 运行(Python 3.8)