我的node4 lambda函数通过api gw调用,它发出一系列缓慢的api调用。
为了不让用户等待一切完成,我计划让我的代码如下所示:
function(event, context, callback) {
...
// Return users API GW call now
callback(null, data);
// Do the heavy lifting afterwards.
longApiCall().then(otherLongApiCalls)
}
但现在我读到:
“回调将等待node.js运行时事件循环为空,然后冻结进程并将结果返回给调用方。”
这是否意味着api gw在longapicalls完成之前或之后返回响应数据?
如果在这之后,是否有一个建议的方法来在一切完成之前“提前返回”?
最佳答案
在当前配置中,API网关将等待lambda函数完成执行后再发送响应。您的选择是:
将API网关端点的集成类型更改为AWS服务,并让API网关异步调用lambda函数。这是记录在案的。
让API网关调用的lambda函数只异步调用另一个lambda函数,然后返回。
让api网关或api网关调用的lambda函数向sns主题发送消息。然后让sns主题触发处理长API调用的lambda函数。这将使您的微服务分离一点。
让API网关或API网关调用的lambda函数触发一个配置为通过一个或多个lambda函数处理长API调用的here。如果长API调用有超过单个lambda函数5分钟执行时间限制的风险,我建议使用这种方法。