【问题标题】:AWS Lambda, retries on timeout, Python SDKAWS Lambda,超时重试,Python SDK
【发布时间】:2020-09-22 11:33:46
【问题描述】:

我试图在 Jupyter 笔记本中以 同步 方式通过 Python SDK 调用 Lambda 函数。我发送的事件需要超过最大可能超时限制(15 分钟)才能完成。

我注意到事件有时(并非总是)在超时错误时被重新发送到 lambda。这一直持续下去,直到我通过将其并发性设置为 0 来关闭 lambda。如果我降低超时限制(例如,10 分钟),这永远不会发生,这意味着,事件永远不会被重新发送,只有一次调用在日志中,只有一个错误,之后没有任何活动。

发生了什么事?如何合理化这些观察结果?

【问题讨论】:

  • 您好,您是否考虑过设置最大重试分配以及 DLQ 的配置?更多信息在这里:aws.amazon.com/about-aws/whats-new/2019/11/…
  • @mokugo-devops 是的,当然。但这仅适用于我理解的异步调用。
  • 或者,您可以尝试将其放入步进函数并调用它吗?
  • @mokugo-devops 谢谢,我试试看

标签: python amazon-web-services aws-lambda aws-sdk


【解决方案1】:

我建议您打开 DEBUG 级别调试并在您看到 CloudWatch 日志执行多次时检查它。我有时会看到这种情况,当我这样做时,我通常会看到来自 SDK 代码本身的日志条目,这些条目告诉我它有一些正在执行的内置重试逻辑。如果调用 lambda 的调用没有得到正确的响应,它可能会再次重试调用——但服务可能接收到原始请求并执行它,但响应出现问题,因此调用者重新——在

查看此链接中所说的内容:https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-retry-timeout-sdk/

注意:网络连接时 API 调用可能需要比预期更长的时间 出现问题。网络问题也可能导致重试和重复 API 要求。要为这些事件做好准备,请your Lambda function must always be idempotent

如果您使用 AWS 开发工具包进行 API 调用并且调用失败,则开发工具包 自动重试呼叫。 SDK的时间和次数 重试次数取决于每个 SDK 的不同设置。

那篇文章提供了有关故障排除或更改配置设置的提示。

另见https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html

【讨论】:

  • 很好的信息,非常感谢 - 调查。我会暂时打开这个问题,以防其他人做出贡献。
  • 你还在等待这个问题的更多答案吗?
【解决方案2】:

试试看step functions,这样可以控制Lambda的重试逻辑,标记为失败。

如果您的 Lambda 函数需要 15 分钟,请确定您是否可以将其分解为更小的 Lambda 函数并在您的 Lambda 函数中依次调用每个函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2018-09-29
    • 2019-04-03
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多