如何在有限的时间内使用AWS Lambda作为后台任务运行?

我要执行的操作是触发lambda作为背景运行有限的时间(少于有限的lambda超时)。我使用setInterval和setTimeout,但是它们不能与async / await一起正常工作。请注意,如果在本地作为节点应用程序运行,该代码将起作用。我的代码如下:

const mqtt = require('async-mqtt');

module.exports.startPolling = function(event,context,callback) {
    context.callbackWaitsForEmptyEventLoop = false
    let runInterval = setInterval( async() => {
    await run("tram","#");
  },1000);
  setTimeout(() => { clearInterval(runInterval)},5000); 
}


const run = async(mode,route) => {  
  console.log("Starting");
    try {
        client = await mqtt.connectAsync('mqtts://mqtt.hsl.fi:8883/');
        await client.subscribe(`/hfp/v2/journey/+/vp/${mode}/${route}`); 
        response = await getMessageAsync(client,"message");
        console.log(response.toString());
        await client.end();
        console.log("Done");
    } catch (e){
        console.log(e.stack);
        process.exit();
    }
}

const getMessageAsync = (client,...args) => {
  return new Promise((resolve,reject) => {
    client.on(...args,(topic,message) => {
      resolve(message);
    });
  });
}
qiyugfh0715021 回答:如何在有限的时间内使用AWS Lambda作为后台任务运行?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3133107.html

大家都在问