JVM 中有没有办法保证某个函数在 AWS lambda 函数退出之前运行?我想将内部缓冲区刷新到标准输出,作为 lambda 函数中的最后一个操作,即使抛出一些异常也是如此。
最佳答案
据我了解,您希望在 Lambda 函数停止之前执行一些代码,无论您的执行状态是什么(运行/等待/异常处理/等)。
这对于 Lambda 来说是不可能的,即没有触发任何事件或类似的东西可以被识别为关闭钩子(Hook)。一旦超时,JVM 将被卡住。不过,您可以使用 Context
对象中的 getRemainingTimeInMillis()
方法观察剩余执行时间。来自 docs :
Returns the number of milliseconds left before the execution times out.
因此,在初始化函数时,您可以安排一项任务,定期检查 Lambda 函数超时之前还剩多少时间。然后,如果只剩下不到 X(毫秒)秒,则执行 Y。
关于java - 保证在 AWS lambda 退出之前运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844983/