Je recherche un emploi du temps de nœud qui me permettra de planifier un certain nombre de tâches à des intervalles différents. Par exemple,
Je veux aussi pouvoir démarrer et arrêter le processus.
Jusqu'à présent, j'ai examiné:
plus tard - la syntaxe m'embrouille, apparemment aussi vous ne pouvez pas programmer de tâches au-delà d'un mois
agenda - semble le plus prometteur, mais je suis confus quant à la fonctionnalité de la base de données
timeplan - trop simple, ne peut pas démarrer et arrêter
Je trouve la syntaxe de ce dernier déroutant.
Je recommanderais node-cron
. Il permet d’exécuter des tâches à l’aide de modèles Cron, par exemple.
_'* * * * * *' - 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)
_
Mais aussi plusieurs planifications complexes , par ex.
_'00 30 11 * * 1-5' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.
_
Exemple de code : exécution du travail toutes les 10 minutes:
_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();
_
Vous pouvez trouver plus d'exemples dans node-cron wiki
Plus d'informations sur la configuration de cron peuvent être trouvées sur cron wiki
J'ai utilisé cette bibliothèque dans de nombreux projets et cela fait le travail. J'espère que cela aidera.
J'ai utilisé node-cron et agenda .
node-cron est une bibliothèque très simple, qui fournit des bases très simples et faciles à comprendre, comme crontab. Il n'a pas besoin de configuration et fonctionne simplement.
var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){...});
myJob.start();
agenda est très puissant et convient à des services beaucoup plus complexes. Pensez à ifttt , vous devez exécuter des millions de tâches. agenda serait le meilleur choix.
Remarque: vous devez utiliser Mongodb pour utiliser Agenda .
var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}});
agenda.every('*/3 * * * *', 'delete old users');
agenda.start();
Je pense que le meilleur classement est
1.node-schedule
2. plus tard
3.crontab
et l'exemple de node-schedule est ci-dessous:
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");
});
Peut-être que vous pouvez trouver la réponse de modules de nœuds .
J'ai écrit un module de noeud qui fournit un wrapper autour de setInterval en utilisant des durées de moment fournissant une interface déclarative:
npm installe chaque instant
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();
});
nodeJS par défaut
https://nodejs.org/api/timers.html
setInterval(function() {
// your function
}, 5000);
J'ai écrit un petit module pour faire exactement cela, appelé timexe:
Installer:
npm install timexe
utilisation:
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);
vous pouvez obtenir la fonctionnalité de démarrage/arrêt en supprimant/ajoutant de nouveau l'entrée directement dans le tableau des travaux timexe. Mais ce n'est pas une fonction expresse.