【问题标题】:How to discard records?如何丢弃记录?
【发布时间】:2017-10-12 10:16:23
【问题描述】:

我向 AWS Kinesis 发送事件,这些事件由 AWS lambda 函数处理。 但是,如果 lambda 抛出一些错误,记录不会被丢弃,而是会反复处理,从而阻塞新记录的处理。

我宁愿跳过错误记录并消化新记录。 我不明白该怎么做。

lambda 函数捕获任何异常,因此它不应该给出任何执行错误。

这里是python中的sn-p下面。

我知道 lambda 应该在“保留”期间重试(默认为 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...但我看不出我做错了什么

【问题讨论】:

    标签: aws-lambda amazon-kinesis


    【解决方案1】:

    好吧,实际上我并没有捕获所有异常。 在python中

    except Exception as e:
    

    不捕获所有异常:Difference between except: and except Exception as e: in Python

    它不会捕获 BaseException 或系统退出异常 SystemExit、KeyboardInterrupt 和 GeneratorExit。 这就是它不起作用的原因。

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      相关资源
      最近更新 更多