mongodb - async - nodejs mongodriver
Programe el trabajo de Node.js cada cinco minutos (2)
var minutes = 5, the_interval = minutes * 60 * 1000;
setInterval(function() {
console.log("I am doing my 5 minutes check");
// do your stuff here
}, the_interval);
Guarde ese código como node_regular_job.js y ejecútelo :)
Soy nuevo en node.js. Necesito node.js para consultar un mongodb cada cinco minutos, obtener datos específicos y luego usar socket.io, permitir que los clientes web suscritos accedan a estos datos. Ya tengo configurada la parte socket.io y, por supuesto, mongo, solo necesito saber cómo hacer que node.js se ejecute cada cinco minutos y luego publicarlo en socket.io.
¿Cuál es la mejor solución para esto?
Gracias
Así es como debería hacer si tuviera que gestionar algunas tareas asíncronas:
(function schedule() {
background.asyncStuff().then(function() {
console.log(''Process finished, waiting 5 minutes'');
setTimeout(function() {
console.log(''Going to restart'');
schedule();
}, 1000 * 60 * 5);
}).catch(err => console.error(''error in scheduler'', err));
})();
Sin embargo, no puede garantizar cuándo se iniciará, pero al menos no ejecutará varias veces el trabajo al mismo tiempo, si su trabajo tarda más de 5 minutos en ejecutarse.
Puede seguir utilizando setInterval
para programar un trabajo asincrónico, pero si lo hace, al menos debe marcar las tareas procesadas como "procesadas", de modo que si el trabajo se va a programar una segunda vez antes de que termine el anterior, su la lógica puede decidir no procesar las tareas que aún se procesan.