【发布时间】:2013-02-09 13:44:43
【问题描述】:
有没有办法在内部将请求的处理从一个RequestHandler 子类传递给另一个子类?基本上,我想做的是,从RequestHandler(嗯,RequestHandler 的子类)的get 方法,将处理请求的任务分派给另一个处理程序(RequestHandler 的子类),其名称由从数据存储中获取的值确定(我使用的是 GAE,但这与此问题无关)。代码看起来像这样:
class Dispatcher(RequestHandler):
def get_handler(some_id):
handler_name = get_handler_name(some_id) # fetches from datastore/etc.
return getattr(my_module, handler_name)
def get(self, some_id, *args, **kwargs):
handler = get_handler(some_id) # e.g., handler could be a HandlerA
# Not a real function, just to describe what to do:
# invokes get method of HandlerA (if handler == HandlerA)
dispatch_to_handler(handler, self, *args, **kwargs)
def post(self, some_id):
handler = get_handler(some_id)
dispatch_to_handler(....) # dispatches to post method of the handler
class HandlerA(RequestHandler):
def get(self, *args, **kwargs):
do_stuff()
def post(...):
do_post_stuff()
最大的问题是我需要以某种方式将self 以及位置和关键字参数传递给另一个处理程序(本例中为 HandlerA),因为self 包含请求、响应、会话、身份验证和其他数据,HandlerA(或任何可能的处理程序)需要这些数据来处理请求。
【问题讨论】: