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 を拡張して、元の例外を再発生させることです。TruePython 2.7 で動作し、アプリケーション コンストラクターでデバッグ フラグが設定されている場合にのみ、例外を渡します。

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 に答える