JVM中是否有一种方法可以保证某些功能在AWS lambda函数退出之前可以运行?我想将内部缓冲区刷新到stdout,作为lambda函数中的最后一个动作,即使引发某些异常也是如此。
答案 0 :(得分:1)
据我了解,无论您的执行状态是什么(运行/等待/异常处理/等),您都希望在Lambda函数停止之前执行一些代码。
这对于Lambda来说是开箱即用的,即没有事件触发或类似事件可以识别为关闭异常。一旦达到超时,JVM将被冻结。但是,您可以使用getRemainingTimeInMillis()
对象中的方法Context
来观察剩余的执行时间。来自docs:
返回执行超时之前剩余的毫秒数。
因此,在初始化函数时,可以安排一个任务,该任务定期检查Lambda函数达到超时之前还剩下多少时间。然后,如果仅剩不到X(毫秒)秒,则执行Y。