我在AWS Lambda上有一个nodejs函数,它在Async Parallel中运行多个setTimeout。有些是即时的,有些可能是从现在开始的30分钟。我遇到的问题是它永远不会达到30分钟的超时,因为它会空闲然后死掉。无论如何都要保持lambda函数在等待启动其他超时函数时保持活动状态。
答案 0 :(得分:8)
Lambda的生命周期最长为300秒。
无法增加超过300秒。引入Lambda时,最长执行时间为60秒。后来增加到300秒。
您需要重新访问您的设计并检查Lambda是否是正确的解决方案。运行与Lambda规范匹配的按需EC2实例可能是一种解决方案。或者陈述您的问题,我们可以提出解决方案。
答案 1 :(得分:5)
除了你不能这样做的事实,请参阅hellov的回答,我会说这是一个不正确的设计选择。如果您需要长期服务,直接使用ec2实例将是更好的选择。
如果你只需要在30分钟后做一些事情,那么我会看到当时在lambda代码本身之外生成AWS Lambda事件。换句话说,Lambda用于纯粹的计算,等待内部任何东西似乎是错误的方法。
答案 2 :(得分:1)
正如其他人所提到的,Lambda函数的最长执行时间有300秒的硬限制。基于对问题的快速概述,我不认为Lambda是正确的解决方案。
如果您需要处理这些长时间运行的异步任务,那么您需要添加某种类型的" connector"这些不同的任务之间。一种可能的解决方案是使用SQS Queues。
组分A - > SQS 1 - >组件B
答案 3 :(得分:1)
您的Lambda函数执行一些并行任务。在Lambda中执行此操作的最佳方法是将每个任务拆分为单独的Lambda,然后以对您的应用程序最有意义的方式协调这些任务。
这可以通过几种不同的方式完成(最佳方法取决于您的应用程序):