node.js - seguro - Necesito un programador Nodejs que permita tareas en diferentes intervalos
nodejs pdf español (6)
Estoy buscando un horario de trabajo de nodo que me permita programar una serie de tareas en diferentes intervalos. Por ejemplo,
- llamar a la función A cada 30 segundos
- llama a la función B cada 60 segundos
- llama a la función C cada 7 días
También quiero poder comenzar y detener el proceso.
Hasta ahora, he visto:
later - la sintaxis me confunde, también aparentemente no puedes programar tareas más allá de un mes
agenda - parece ser la más prometedora, sin embargo, estoy confundido acerca de la funcionalidad de la base de datos
timeplan : demasiado simple, no puede iniciarse ni detenerse
Encuentro que la sintaxis de este último es confusa.
Creo que el mejor ranking es
1.node-schedule
2. más tarde
3.crontab
y la muestra del node-schedule de node-schedule está a continuación:
var schedule = require("node-schedule");
var rule = new schedule.RecurrenceRule();
//rule.minute = 40;
rule.second = 10;
var jj = schedule.scheduleJob(rule, function(){
console.log("execute jj");
});
Quizás puedas encontrar la respuesta de los módulos de nodos .
He escrito un módulo de nodos que proporciona un contenedor alrededor de setInterval usando duraciones de momento que proporcionan una interfaz declarativa:
npm instala cada momento
var every = require(''every-moment'');
var timer = every(5, ''seconds'', function() {
console.log(this.duration);
});
every(2, ''weeks'', function() {
console.log(this.duration);
timer.stop();
this.set(1, ''week'');
this.start();
});
He escrito un pequeño módulo para hacer exactamente eso. Lo puedes encontrar aquí:
https://github.com/paragi/timexe.git
https://www.npmjs.com/package/timexe
Algunas de las características:
- Es un código simple, pequeño y confiable y no tiene dependencias
- La resolución es en milisegundos y tiene una alta precisión en el tiempo
- Cron gusta, pero no compatible (orden inverso y otras Mejoras)
- Yo también trabajo en el navegador
Instalar:
npm install timexe
utilizar:
var timexe = require(''timexe'');
//Every 30 sec
var res1=timexe(”* * * * * /30”, function() console.log(“Its time again”)});
//Every minute
var res2=timexe(”* * * * *”,function() console.log(“a minute has passed”)});
//Every 7 days
var res3=timexe(”* y/7”,function() console.log(“its the 7th day”)});
//Every Wednesdays
var res3=timexe(”* * w3”,function() console.log(“its Wednesdays”)});
// Stop "every 30 sec. timer"
timexe.remove(res1.id);
puede lograr la funcionalidad de inicio / detención al eliminar / volver a agregar la entrada directamente en la matriz de trabajos timexe. Pero no es una función expresa.
node-cron es una biblioteca muy simple, que proporciona una API muy básica y fácil de entender, como crontab. No necesita ninguna configuración y simplemente funciona.
var cronJob = require(''cron'').CronJob;
var myJob = new cronJob(''00 30 11 * * 1-5'', function(){...});
myJob.start();
la agenda es muy poderosa y adecuada para servicios mucho más complejos. Piensa en ifttt , tienes que ejecutar millones de tareas. la agenda sería la mejor opción.
Nota: necesitas que Mongodb use Agenda
var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: ''localhost:27017/agenda-example''}});
agenda.every(''*/3 * * * *'', ''delete old users'');
agenda.start();
nodeJS por defecto
https://nodejs.org/api/timers.html
setInterval(function() {
// your function
}, 5000);
Yo recomendaría node-cron
. Permite ejecutar tareas usando patrones de Cron, por ejemplo
''* * * * * *'' - runs every second
''*/5 * * * * *'' - runs every 5 seconds
''10,20,30 * * * * *'' - run at 10th, 20th and 30th second of every minute
''0 * * * * *'' - runs every minute
''0 0 * * * *'' - runs every hour (at 0 minutes and 0 seconds)
Pero también horarios más complejos , por ejemplo
''00 30 11 * * 1-5'' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.
Código de muestra : trabajo en ejecución cada 10 minutos:
var cron = require(''cron'');
var cronJob = cron.job("0 */10 * * * *", function(){
// perform operation e.g. GET request http.get() etc.
console.info(''cron job completed'');
});
cronJob.start();
Puede encontrar más ejemplos en la wiki de node-cron
Se puede encontrar más información sobre la configuración cron en cron wiki
He estado usando esa biblioteca en muchos proyectos y hace el trabajo. Espero que le ayudará.