En alguno proyectos es necesario tener una tarea ejecutando cada cierto tiempo, la cual estaria haciendo desde un heardbeat hasta una consulta en una base de datos para consumir un web service en fin muchas cosas. En este tutorial estaré mostrando una alternativa al poderoso cron de Linux pero esta vez con nodejs.
El ejemplo consta de 2 archivos un archivo server.js que es nuestro servidor js y otro archivo llamado task.js que es nuestro cron.
Una vez inciado el cron el envio de mensajes se realiza de la siguiente manera
childProcess.send({values:[]})
Server.js
var http = require('http');
var process = require('child_process');
var app = http.createServer(function(req,res){
child.send({'key':'value'})
res.end('hello');
});
console.log('server running');
// se realiza el fork del nuevo proceso
var child = process.fork('task.js');
// dispara el evento message hacia el fork
child.send({'key':'valor'})
console.log('proceso hijo iniciado');
app.listen(3000);
Task.js
var context = [];
(function(context){
setInterval(function(){
var value = context.pop()
console.log('iteraciones ' + value);
},1000);
})(context);
process.on('message',function(value){
console.log('mensaje recibido');
context.push(value);
});
Esta seria otra opcion para el task.
Task2.js
var context = [];
var process = function(){
var value = context.pop()
console.log('iteraciones ' + value);
}
process.on('message',function(value){
console.log('mensaje recibido');
context.push(value);
});
Mi recomendacion es que para algun proceso ligero/pesado y no quieras tener que incluir algun nuevo modulo de node.js o simplemente quieres manejarlo tu mismo lo intententes de esta manera.
Referencias
Child Process Nodejs
Source
Sending objects
Fork process
Nota: Si requiren algo mas complejo con respecto a este tema recomiendo usar este modulo modulo.
Sigue leyendo →