我已经在python中创建了一个基于类的AWS lambda函数,名为requestHandler.py,如下所示
from action_dispatcher import ActionDispatcher
class RequestHandler(ActionDispatcher):
@staticmethod
def createTemplate(event, context):
return "Hello world"
我的action_dispatcher.py如下所示。
import json
class ActionDispatcher(object):
def __call__(self, event, context, *args, **kwargs):
action = event.get('action')
handler = getattr(self, action, None)
if handler is None:
return json.loads({'status': 'error', 'code': 404, 'message':"Action {0} not found.".format(action) })
return handler(request, *args, **kwargs)
通过上述设置和lambda处理程序作为requestHandler.RequestHandler,在这种情况下,我将创建错误作为createTemplate,而出现错误“ RequestHandler()不带参数”。所以我想从RequestHandler调用此方法。
最佳答案
在我看来,您正在尝试调用您的类而不是该类的实例。 RequestHandler()
将调用__init__
方法来初始化该类的实例。由于您尚未定义方法,因此它不需要任何参数。要访问__call__
,您需要调用您的类的实例。
handler = RequestHandler()
result = handler(request, context, *args, **kwargs)