如何丢弃记录?
How to discard records?
我将事件发送到 AWS Kinesis,这些事件由 AWS lambda 函数处理。
但是,如果 lambda 抛出一些错误,记录不会被丢弃,而是一遍又一遍地处理,阻止新记录的处理。
我宁愿跳过错误记录并消化新记录。
我不明白该怎么做。
lambda 函数捕获任何异常,因此它不应该给出任何执行错误。
下面是 python 中的片段。
我知道应该在 "retention" 期间(默认 24 小时)重试 lambda,但我想放弃并最终记录任何类型的错误
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}
我想我遵循了这个...但我不明白我做错了什么
好吧,实际上我并没有捕捉到所有异常。
在 python
except Exception as e:
没有捕获所有异常:Difference between except: and except Exception as e: in Python
它不捕获 BaseException 或系统退出异常 SystemExit、KeyboardInterrupt 和 GeneratorExit。
这就是它不起作用的原因。
我将事件发送到 AWS Kinesis,这些事件由 AWS lambda 函数处理。 但是,如果 lambda 抛出一些错误,记录不会被丢弃,而是一遍又一遍地处理,阻止新记录的处理。
我宁愿跳过错误记录并消化新记录。 我不明白该怎么做。
lambda 函数捕获任何异常,因此它不应该给出任何执行错误。
下面是 python 中的片段。
我知道应该在 "retention" 期间(默认 24 小时)重试 lambda,但我想放弃并最终记录任何类型的错误
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}
我想我遵循了这个
好吧,实际上我并没有捕捉到所有异常。 在 python
except Exception as e:
没有捕获所有异常:Difference between except: and except Exception as e: in Python
它不捕获 BaseException 或系统退出异常 SystemExit、KeyboardInterrupt 和 GeneratorExit。 这就是它不起作用的原因。