webapp2.get_app()
:と現在のリクエストインスタンス:を使用して現在のアプリ/ WSGIインスタンスをwebapp2.get_request()
取得できますが、現在のwebapp2ハンドラーインスタンスを:から取得する方法
class MainHandler(webapp2.RequestHandler):
def get(self):
for :
webapp2.Route(r'/', handler=module.MainHandler, name='main'),
このオブジェクトを参照するために「自己」を使用せずに。出来ますか?
リクエストオブジェクトのルートオブジェクトにはハンドラー名が含まれていますが、インスタンスは含まれていません。
更新:解決策はまだ見つかりません。今のところ、のディスパッチを使用して、ハンドラー(自己)をグローバルに格納しwebapp2.RequestHandler
ます。しかし、別の方法が必要です。
解決策を見つけるために、私はNickJohnsonzの「独自のPythonWebアプリケーションフレームワークを作成する方法」を研究しています:http : //blog.notdot.net/2010/01/Writing-your-own-webapp-framework-for-App-Engine webapp2の仕組み。
私が何をした :
とインスタンスをwebapp2.get_request()
見つけることができます。しかし、ハンドラーインスタンスではありません。ハンドラインスタンスは保存されません。request.route
request.route.handler_adapter
結論:自分のコンストラクターを使用してwebapp2.RequestHandler
、ハンドラーインスタンス(自己)を要求レジストリ(スレッドセーフ)に保存します。また、リクエストごとに新しいインスタンス(ハンドラーとリクエスト)が作成されるため、ルート名を一致させる必要はありません。