同じラムダ関数をsetInterval関数を使用して連続的に呼び出すと、問題が発生していました。awsラムダ関数でのsetIntervalの使用方法
ラムダ関数私は私のMongoDB内のドキュメントのいくつかを更新しようとしています
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() {
\t collection.find({"deviceCommand.command":"getAudio","deviceCommand.timestamp":{ $lte: new Date((new Date)*1 - 60000*2)}}).toArray(function(err, results) {
\t \t if(err){
\t \t \t console.log(err);
\t \t }else{
\t \t \t for(var i=0;i<results.length;i++){
\t \t \t \t collection.update({_id:results[i]._id},{$set:{"deviceCommand.command":" "}},function(err, results) {
\t \t \t \t \t \t \t
\t \t \t \t \t }); \t
\t \t \t } \t
\t \t }
\t });
}, 5000);
});
context.succeed("Successfully uploaded");
}
exports.handler=funUpdateCommand;
は、私は、連続的なバックグラウンドジョブとしてAWSのラムダ関数を実行する必要がありますが、のsetIntervalを使用した場合タイムアウトエラーを返します。
どうすれば私のawsラムダ関数をsetIntervalを使って連続的に実行できますか?
aws lambda関数を起動するためにCloudWatch Eventsを使用していましたが、今は1分ごとに呼び出していますが、30秒ごとにスケジュールする必要があります。それは可能ですか?もしそうなら、どのように? – Sabreena
残念ながら、CloudWatchイベントは第2レベルの精度をサポートしていません。 – taskiner
OK、ありがとうございました:-) – Sabreena