Vraag Ik heb een Nodejs-scheduler nodig die taken met verschillende intervallen mogelijk maakt [gesloten]


Ik ben op zoek naar een knooppuntenplanning waarmee ik een aantal taken met verschillende tussenpozen kan plannen. Bijvoorbeeld,

  • bel functie A elke 30 seconden
  • oproepfunctie B elke 60 seconden
  • bel functie C elke 7 dagen

Ik wil ook het proces kunnen starten en stoppen.

Tot nu toe heb ik gekeken naar:

  • later - de syntaxis brengt me in de war, blijkbaar kun je ook niet langer dan een maand taken plannen

  • agenda- lijkt de meest veelbelovende, maar ik ben in de war over de database-functionaliteit

  • tijdplan - te simpel, kan niet starten en stoppen

Ik vind de syntaxis van de laatste verwarrend.


96
2017-12-10 16:02


oorsprong


antwoorden:


ik zou aanbevelen node-cron. Hiermee kan worden uitgevoerd taken gebruikmakend van Cron-patronen b.v.

'* * * * * *' - 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)

Maar ook meer complex schema's b.v.

'00 30 11 * * 1-5' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.

Voorbeeldcode: elke 10 minuten een taak uitvoeren:

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();

U kunt meer voorbeelden vinden in knooppunt-cron wiki

Meer informatie over de cron-configuratie vindt u op cron wiki

Ik heb die bibliotheek in veel projecten gebruikt en het doet het werk. Ik hoop dat dat zal helpen.


178
2017-12-10 16:13



Ik heb gebruikt knooppunt-cron en agenda.

knooppunt-cron is een heel eenvoudige bibliotheek, die heel eenvoudige en gemakkelijk te begrijpen api zoals crontab biedt. Het heeft geen configuratie nodig en werkt gewoon.

var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){...});
myJob.start();

agenda is zeer krachtig en geschikt voor veel complexere services. Denk aan ifttt, je moet miljoenen taken uitvoeren. agenda zou de beste keuze zijn.

Opmerking: dat heb je nodig MongoDB om Agenda te gebruiken

var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}});
agenda.every('*/3 * * * *', 'delete old users');
agenda.start();

30
2017-12-10 16:23



Ik heb een knooppuntmodule geschreven die een wrapper rond setInterval biedt met behulp van momentduren die een declaratieve interface bieden:

npm installeer elk moment

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();
});

https://www.npmjs.com/package/every-moment

https://github.com/raygerrard/every-moment


10
2018-01-12 14:08



Ik denk dat de beste ranking is

1.node tijdschema

2.later

3.crontab

en het monster van knooppunt-schema is beneden:

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");
});

Misschien kun je het antwoord vinden knoopmodules.


8
2018-05-16 05:38



nodeJS standaard

https://nodejs.org/api/timers.html

setInterval(function() {
    // your function
}, 5000);

6
2018-05-15 10:38



Ik heb een kleine module geschreven om precies dat te doen. Je kunt het hier vinden:
https://github.com/paragi/timexe.git
https://www.npmjs.com/package/timexe

Enkele van de functies:

  • Zijn eenvoudige, kleine, betrouwbare code en heeft geen afhankelijkheden
  • De resolutie is in milliseconden en heeft na verloop van tijd een hoge nauwkeurigheid
  • Cron-achtig, maar niet compatibel (omgekeerde volgorde en andere verbeteringen)
  • Ik werk ook in de browser

Installeren:

npm install timexe

gebruik:

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);

u kunt de start / stop-functionaliteit bereiken door het item direct in de timexe-jobarray te verwijderen / opnieuw toe te voegen. Maar het is geen uitdrukkelijke functie.


0
2018-06-27 11:19