返回响应后,Lambda可以继续吗?

时间:2019-08-14 09:27:23

标签: asynchronous aws-lambda serverless

Lambda是否有可能在返回状态代码为202之类的响应后继续处理,然后Lambda必须在结束Lambda之前调用请求?

2 个答案:

答案 0 :(得分:2)

关于函数从Lambda docs返回响应之前启动的后台进程或回调:

如果AWS Lambda选择重用执行上下文,则由Lambda函数启动的,未完成的后台进程或回调将在函数结束时恢复。您应确保在代码退出之前完成代码中的所有后台进程或回调。

编写Lambda函数代码时,请勿假定AWS Lambda自动将执行上下文重新用于后续函数调用。其他因素可能表明需要AWS Lambda创建新的执行上下文,这可能导致意外结果,例如数据库连接失败。

另外使用non-async handlers用于Node.js Lambda函数:

对于非异步处理程序,函数将继续执行,直到事件循环为空或函数超时为止。直到所有事件循环任务完成后,响应才会发送给调用者。如果函数超时,则返回错误。通过将context.callbackWaitsForEmptyEventLoop设置为false,可以将运行时配置为立即发送响应。

答案 1 :(得分:1)

仅使用AWS Lambda是不可能的。

您可能想研究AWS Step Functions才能解决您的问题。