我创建了一个无服务器项目,其功能将使用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分钟。该功能包括通过请求从网站获取信息并对其进行处理,...
179980可疑地接近180000,这恰好是3分钟。您的无服务器配置中是否有3分钟的超时?