我在Javascript的4.3运行时使用了两个lambda函数。我运行第一个,它同步调用第二个(同步是意图)。问题是第二次超时(60秒)但实际上仅在22秒后达到成功结束。
这是两个Lambda函数之间的流程:
Lamda功能 A 我不再获取CloudWatch日志,但真正的问题(我认为)是功能 B ,它会无缘无故地超时。
以下是一些CloudWatch日志来说明这一点:
最后功能B中的代码 - 包括上面的“成功”日志语句,见下图:
最初我只有callback(null, 'successful ...')
行而不是nodejs 0.10.x
的方式,你在上下文中调用了succeed()
。绝望中我添加了两个但结果是一样的。
任何人都知道发生了什么事?我可以通过哪种方式调试它?
如果A和B之间的调用逻辑在B开始的状态中产生差异,这里是调用:
答案 0 :(得分:27)
正如Michael - sqlbot所说;问题似乎是只要存在开放连接,由于非空事件循环,调用回调不会终止该函数。打开Redis连接时遇到同样的问题;所述解决方案是context.callbackWaitsForEmptyEventLoop = false;
答案 1 :(得分:0)
至少对于redis连接而言,它有助于退出与redis的连接,以使Lambda正确完成工作。