【问题标题】:AWS Python lambda times out forever after first timeoutAWS Python lambda 在第一次超时后永远超时
【发布时间】:2020-03-03 03:22:43
【问题描述】:

问题:

我有一个 python lambda,它每秒不断地接收数据并将其放入 DynamoDB。我注意到,在第一次 DynamoDB 需要更多时间并且函数超时后,以下所有调用也超时并且它永远不会恢复。 使 lambda 恢复正常的方法是重新部署它。 当它开始超时时,它不显示任何日志。没有执行任何代码就超时了。

下面是代表问题的控制台图片。

为了使用此功能更快地重现问题,我执行了以下操作:

  1. 重新部署它,看看它工作正常。
  2. 将 lambda 可用的内存减少到最小值,并将超时时间减少到 1 秒。这将导致第一次超时
  3. 将 lambda 的内存恢复到正常状态,甚至增加超时。但是,超时仍然存在

有没有办法解决这个问题而无需重新部署?

我在这篇文章中看到了与 nodejs 相同的问题描述:https://forums.aws.amazon.com/thread.jspa?threadID=234417

我没有看到任何与 python lambda env 相关的描述

有关设置的更多信息:

经过测试的 Lambda 环境: python3.6 和 python3.7

部署 lambda 的工具: serverless 1.57.0

使用的无服务器插件: serverless-python-requirements, serverless-wsgi

为 lambda 使用任何 VPC

感谢您的帮助,

【问题讨论】:

  • Lambda 函数在做什么?可以分享一下代码吗? Lambda 函数的日志中是否有与您的问题相关的任何错误或其他信息?
  • 我不能分享代码,但它相当简单。它是一个将数据放入 dynamoDB 的小型 lambda。我在这里看到有人抱怨 nodejs 存在同样的问题:forums.aws.amazon.com/thread.jspa?threadID=234417。但我还没有看到任何与 Python 相关的东西。超时时没有日志。它甚至没有启动正常的代码。
  • 请尝试分享一个小示例,删除所有显示此问题的敏感部分。这其中的 WSGI 部分是不寻常的,因此对于我们这些不将 WSGI 与无服务器 Python 一起使用的人来说,尝试重现会很困难。
  • 将尝试将其隔离并放入存储库以便其他人可以访问
  • 检查您的 DynamoDB 指标是否受到限制。

标签: python amazon-web-services aws-lambda serverless-framework serverless


【解决方案1】:

找出错误的触发因素。 当 lambda 函数 zip 上传过大时,第一次超时后,永远无法恢复!

我的解决方案是仔细去除不必要的依赖项以使包更小。

我使用 docker 容器创建了一个存储库,以便人们更轻松地重现问题:

https://github.com/pedrohbtp/bug-aws-lambda-infinite-timeout

感谢 cmets 中的消息。我感谢任何花时间尝试在 SO 中提供帮助的人。

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2019-04-03
    • 2021-06-08
    • 2020-09-22
    • 2021-07-23
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多