为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中基于类的 AWS lambda

Python 中基于类的 AWS lambda

侃侃无极 2021-12-26 10:32:55
我在名为requestHandler.py 的python 中创建了一个基于类的 AWS lambda 函数,如下所示from action_dispatcher import ActionDispatcherclass RequestHandler(ActionDispatcher):    @staticmethod    def createTemplate(event, context):        return "Hello world"我的action_dispatcher.py如下所示。import jsonclass 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,我收到错误“RequestHandler() 不接受任何参数”,在这种情况下,我将操作创建为 createTemplate。所以我想从 RequestHandler 调用这个方法。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

在我看来,您正在尝试调用您的类而不是类的实例。RequestHandler()将调用__init__方法来初始化类的实例。由于您尚未定义该方法,因此它不需要任何参数。要访问__call__您需要调用类的实例。


handler = RequestHandler()

result = handler(request, context, *args, **kwargs)


查看完整回答
反对 回复 2021-12-26
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

您只能在 python 中使用def handler(event, context):. 但是,我找到了一个包,它允许您将处理程序作为一个类来调用


如他们的文档中所述,用法如下:


pip install aws-lambda-handler


import aws_lambda


class EchoHandler(aws_lambda.Handler):

    """Echo handler."""


    def perform(self, request, **k):

        """Echo perform method."""

        response = aws_lambda.Response()

        response.body = self.request.event

        return response


echo_handler = EchoHandler()


# `echo_handler` is now a callable function you can map your AWS Lambda function to


查看完整回答
反对 回复 2021-12-26
?
烙印99

TA贡献1829条经验 获得超13个赞

我的问题的解决方案很简单,正如 jacinator 所提到的,我应该尝试使用类实例。之前对于 lambda 处理程序,我使用传递类作为处理程序,现在我将类的实例作为处理程序传递。在requestHandler.py 中 添加了一行 rhandler = RequestHandler() 所以以前我的 lambda 处理程序是这样的 requestHandler.RequestHandler,现在它已更改为requestHandler.rhandler.


查看完整回答
反对 回复 2021-12-26
  • 3 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号