如何丢弃记录?
问题描述:
我向AWS Kinesis发送事件,这些事件由AWS lambda函数处理。 但是,如果lambda引发一些错误,记录不会被丢弃,并且会一遍又一遍地处理,阻止处理新记录。如何丢弃记录?
我宁愿跳过错误的记录和消化新的记录。 我不明白该怎么做。
lambda函数捕获任何异常,所以它不应该给出任何执行错误。
下面是Python中的代码片段。
据我了解,拉姆达应在“保留”期间(24小时默认)重试,但我想放弃,最终记录任何样的错误
def ProcessKinesisRecords(event, context):
body = "ok"
response_code = 200
for record in event['Records']:
# Kinesis data is base64 encoded so decode here
try:
payload = base64.b64decode(record["kinesis"]["data"])
#...payload processing
except Exception as e:
body = e
return {"isBase64Encoded": True, "statusCode": response_code, "headers": { "x-custom-header": "headerValue" }, "body": body}
我觉得我跟这个lambda retries ..但我没有看到我在做什么错误
答
那么,其实我没有捕捉到所有的例外。 在蟒蛇
except Exception as e:
不捕获所有异常:Difference between except: and except Exception as e: in Python
它没有赶上BaseException或系统退出异常SystemExit,一个KeyboardInterrupt和GeneratorExit。 这就是为什么它不工作。