3 回答

TA贡献1875条经验 获得超3个赞
在我看来,您正在尝试调用您的类而不是类的实例。RequestHandler()将调用__init__方法来初始化类的实例。由于您尚未定义该方法,因此它不需要任何参数。要访问__call__您需要调用类的实例。
handler = RequestHandler()
result = handler(request, context, *args, **kwargs)

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

TA贡献1829条经验 获得超13个赞
我的问题的解决方案很简单,正如 jacinator 所提到的,我应该尝试使用类实例。之前对于 lambda 处理程序,我使用传递类作为处理程序,现在我将类的实例作为处理程序传递。在requestHandler.py 中 添加了一行 rhandler = RequestHandler()
所以以前我的 lambda 处理程序是这样的 requestHandler.RequestHandler
,现在它已更改为requestHandler.rhandler
.
添加回答
举报