4

webapp2.get_app()我可以使用:和当前请求实例获取当前的应用程序/WSGI 实例:webapp2.get_request()但是如何从以下位置获取当前的 webapp2 处理程序实例:

class MainHandler(webapp2.RequestHandler):

    def get(self):

for :

webapp2.Route(r'/', handler=module.MainHandler, name='main'),

不使用“self”来指代这个对象。可能吗?

请求对象中的路由对象包含处理程序名称,但不包含实例。

更新:尚未找到解决方案。现在我将处理程序(self)存储在全局中,使用webapp2.RequestHandler. 但必须有另一种方式。

为了找到解决方案,我研究了 Nick Johnsonz“如何编写自己的 Python webapp 框架”: http: //blog.notdot.net/2010/01/Writing-your-own-webapp-framework-for-App-Engine以了解webapp2 是如何工作的。

我做了什么 :

有了webapp2.get_request()我可以找到request.routerequest.route.handler_adapter实例。但不是处理程序实例。处理程序实例未保存。

结论:我使用 my 的构造函数webapp2.RequestHandler将处理程序实例(self)保存在请求注册表(线程安全)中。而且我不必匹配路由名称,因为每个请求都会创建新实例(处理程序和请求)。

4

1 回答 1

1

您的问题(或者可能是示例代码片段)可能需要更明确地定义,以便人们提供合适的答案。

据我所知,您似乎正在寻找一种方法来查找某个函数的调用堆栈以确定最近的RequestHandler实例。如果是这种情况,那么这更像是一个普通的 Python 问题而不是 webapp2,但该traceback模块可能是您正在寻找的。

于 2013-09-21T22:35:16.430 回答