如何在aws lambda函数中使用setInterval

Sab*_*ena 3 javascript mongodb amazon-web-services node.js aws-lambda

使用 setInterval 函数连续调用相同的 lambda 函数时,我遇到了困难。

拉姆达函数

var MongoClient = require('mongodb').MongoClient
    , format = require('util').format;

function funUpdateCommand(event,context,callback){

var mongoUrl='mongodb://**.**.**.**:*****/DBname';
// var mongoUrl='mongodb://127.0.0.1:27017/DBname';

MongoClient.connect(mongoUrl, function(err, db) {
    
    if(err) throw err;

var collection = db.collection('device');

var interval = setInterval(function() {
	collection.find({"deviceCommand.command":"getAudio","deviceCommand.timestamp":{ $lte: new Date((new Date)*1 - 60000*2)}}).toArray(function(err, results) {         
		        if(err){
		        	console.log(err);
		        }else{
			        for(var i=0;i<results.length;i++){
				        collection.update({_id:results[i]._id},{$set:{"deviceCommand.command":" "}},function(err, results) {
							
					});	
			    } 	
		    }
	    });
    }, 5000);
});

context.succeed("Successfully uploaded");

}

exports.handler=funUpdateCommand;
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新 mongoDB 中的一些文档,我需要将 aws lambda 函数作为连续后台作业运行,但是当使用 setInterval 时它会返回超时错误。

如何使用 setInterval 连续运行我的 aws lambda 函数?

tas*_*ner 5

你不能让 lambda 永远运行。Lambda 函数的生命周期仅限于 300 秒,300 秒后,您的函数就会终止。您可以使用 CloudWatch Events 通过 cron 表达式调用相同的 lambda 函数。

您可以从此处了解有关 lambda 限制的更多信息。