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
001 | childProcess.send({values:[]})
|

Server.js
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 | 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' );
var child = process.fork( 'task.js' );
child.send({ 'key' : 'valor' })
console.log( 'proceso hijo iniciado' );
app.listen(3000);
|
Task.js
001 002 003 004 005 006 007 008 009 010 011 012 013 014 | 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
001 002 003 004 005 006 007 008 009 010 011 | 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 →