python - Boto3,AWS Lambda - 结果复合每次调用
问题描述
当我调用我的 Lambda 函数时,结果似乎相互叠加。我得到的每一个响应都是从函数实例化开始的一切,再加上新的值。
有没有办法刷新这个,或者至少有办法弄清楚新的回报是什么?我不确定这是否是预期的行为,或者是否打算如何正确过滤它(或者我正在做一些非常错误的事情)。
ACCESS_KEY = 'xxxxx'
SECRET_KEY = 'xxxxx'
lambda_client = boto3.client('lambda',
region_name='xxxxx',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,)
test_event = {'firstname' : 'mark'}
def invoke_lambda(test_event):
r = lambda_client.invoke(
FunctionName='Python3MySQLEndpoint',
InvocationType='RequestResponse',
Payload=json.dumps(test_event)
)
p = r['Payload']
return p
data = invoke_lambda(test_event)
print data
结果(7次运行):
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'xxxxx@gmail.com', u'firstname': u'mark'}, u'employee_id': 1}
{u'employee_info': {u'lastname': u'xxxxx', u'email': u'asdlkfjasldkfjlasdk@laskjfdlkdas.com', u'firstname': u'mark'}, u'employee_id': 3}
我的意图是让它只返回符合硬编码查询的两条记录。
解决方案
它与此调用中的代码无关。我不得不将列表从处理函数(全局)外部删除到处理函数中。
从:
# array to store values to be returned
records = []
# executes upon API event
def handler(event, context):
...
records.append(record)
在上面,该函数继续附加到一个不断增长的列表中。
至:
# executes upon API event
def handler(event, context):
# array to store values to be returned
records = []
...
records.append(record)
每次调用该函数时,该列表都会被擦除并重新启动。
似乎 Lambda 函数拥有一切。我希望这可以帮助别人。我花了我试图写这个橡皮鸭问题来弄清楚,但这是我宁愿不花的时间:)
推荐阅读
- android - 您的应用容易受到 Intent 重定向的影响
- module - 如何要求 Arduino 中的两个 BC04-B 蓝牙模块正常断开连接?
- regex - 从 URL 中提取 Google 驱动器文件夹 ID
- qaf - QAF - 如何打印/访问常用步骤将()值存储到变量中
- python-3.x - 在树莓派上的 miniconda 上运行 python 3.7
- python - 如何提取决策树中节点和叶子的所有祖先?
- flutter - 是否可以根据用户登录 Firebase 显示不同的 UI(管理员 UI/用户 UI)
- python - 用另一个表的总和更新一个表会引发 Incorrect number of bindings provided 错误
- pymongo - 查找元素值是在没有经过适当清理或验证的情况下流经代码的。这可能会启用二阶 SQL 注入攻击
- mongodb - 如何在mongodb中合并两个模式