我已经在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)

08-07 23:47