【问题标题】:Async AWS Lambda not executed if caller returns too early如果调用者过早返回,则不执行异步 AWS Lambda
【发布时间】:2015-08-31 15:48:53
【问题描述】:

我正在尝试从另一个 lambda 函数 within 调用异步 lambda 函数,但我发现如果调用函数退出太快,它不会被执行。

换句话说,以下内容永远行不通。 LambdaFunction2 永远不会被调用。

function lambdaFunction1(event, context) {
  callLambdaFunction2();
  context.done(null);
}

但到目前为止,在 LambdaFunction1 退出之前添加一小段延迟确实可行:

function lambdaFunction1(event, context) {
  callLambdaFunction2();
  setTimeout(
    function() {
     context.done(null);
    }, 500
  );
}

我担心的是等待 500 毫秒是一个相当随意的幻数。有没有人遇到过类似的问题并找到了更有原则的解决方法?

【问题讨论】:

    标签: aws-lambda


    【解决方案1】:

    callLambdaFunction2() 可能在context.done(null) 导致处理程序退出之前未完成。

    要解决此问题,您需要调用 context.done 作为回调。例如:

    lambda.invoke({
        FunctionName: "functionName",
        InvocationType: 'Event',
        Payload: JSON.stringify(event)
    }, function(err, data) {
        if (err) return context.done(err, null);
        return context.done(null, data);
    });
    

    如果这不是解决方案,你能说明你是如何实现callLambdaFunction2的吗?

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 2019-01-28
      • 2021-12-30
      • 2016-11-25
      • 2017-04-27
      • 1970-01-01
      • 2020-05-30
      • 2010-11-19
      • 1970-01-01
      相关资源
      最近更新 更多