python - Python 中基于类的 AWS lambda
问题描述
我在 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)
使用上述设置和作为requestHandler.RequestHandler的 lambda 处理程序,我收到错误“RequestHandler() 不接受任何参数”,在这种情况下,我将操作创建为 createTemplate。所以我想从 RequestHandler 调用这个方法。
解决方案
在我看来,您正在尝试调用您的类而不是类的实例。RequestHandler()
将调用该__init__
方法来初始化该类的实例。由于您尚未定义该方法,因此它不需要任何参数。要访问__call__
你需要调用你的类的一个实例。
handler = RequestHandler()
result = handler(request, context, *args, **kwargs)
推荐阅读
- python - 带背景干扰的轮廓
- java - 快速处理主题和慢速处理主题 - Akka Kafka
- go - 用于函数重用的 Terratest 实用程序 pkg
- firebase - 如何限制 Firebase 云功能仅接受来自 Firebase 托管网站的请求
- algorithm - 就大 O 而言,“可扩展性”到底是什么意思?
- vb.net - 您有解决 LoaderLock 问题的方法吗?
- python - 查找除目录以外的文件名
- magento - Magento 2:重置订单状态
- ibm-cloud - 如何创建从 github 存储库上的代码部署的 ibm 云功能?
- python - Django在相关外键上组合了许多不相关的模型