lambda函数在未完成过程的情况下再次运行

问题描述 投票:1回答:1

我创建了一个无服务器项目,其功能将使用cron运行,运行时间为5分钟。该功能包括通过请求从网站获取信息并对其进行处理,如果仍然缺少要获取的信息并且该功能的执行时间将要结束,则处理后的信息将保存在redis中,并且该功能将通过Lambda.invoke ()传递必要的参数来继续执行缺少的信息的过程,然后简单地以return {result: 'finish'}结尾。

我目前正在使用serverless-offline在本地进行测试,我按如下方式调用它,如您所见,每次进行调用时,我都不等待答案,它是异步的

const lambda = new Lambda({
      apiVersion: '2031',
      endpoint: 'http://localhost:4000',
    });
const params = {
    FunctionName: 'ImportMage2ProductsJob-dev-ImportProducts',
    InvocationType: 'Event',
    Payload: JSON.stringify(data),
    LogType: 'None',
  };
  lambda.invoke(params, (e, data) => {
    console.log('error invoke ', e);
    console.log('data invoke ', data);
  });

我放置了console.logs来显示函数执行调用的时刻,还使用context.getRemainingTimeInMillis ()来显示运行中间的时间并且我还在return {result: 'finish'}之前放置了一个console.log,以显示该函数结束时该函数的剩余时间。

使用serverless invoke local -f ImportProducts执行功能开始处理。我在终端中看到,在第一次运行时一切正常,并且第一次通过Lambda.invoke调用了该函数。在第二次执行中,一切正常,并且第二次通过Lambda.invoke调用了该函数。在第三次执行中,当运行时间为179980 ms时,该函数将暂停过程,不会完成并且未达到lambda.invoke并仍再次运行。那么为什么函数在其第三次执行中无法完成该过程并再次运行?

谢谢

我创建了一个无服务器项目,其功能将使用cron运行,运行时间为5分钟。该功能包括通过请求从网站获取信息并对其进行处理,...

aws-lambda serverless serverless-offline
1个回答
0
投票

179980可疑地接近180000,这恰好是3分钟。您的无服务器配置中是否有3分钟的超时?

© www.soinside.com 2019 - 2024. All rights reserved.