Мне нужен планировщик Nodejs, который позволяет выполнять задачи с разными интервалами [закрыто]

Я ищу график работы узла,который позволит мне планировать ряд задач с разными интервалами. Например,

  • функция вызова a каждые 30 секунд
  • функция вызова B каждые 60 секунд
  • функция вызова C каждые 7 дней

Я также хочу, чтобы иметь возможность запускать и останавливать процесс.

до сих пор я смотрел на:

  • позже - синтаксис меня смущает, также, по-видимому, вы не можете планировать задачи за месяц

  • повестка дня - кажется наиболее перспективным, однако я запутался в функциональности базы данных

  • часопланом - слишком просто, не может начать и остановить

Я нахожу синтаксис последнего запутанным.

6 ответов


Я бы порекомендовал node-cron. Это позволяет запускать задачи использование шаблонов Cron, например

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

а также комплекс графики например

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

пример кода: запуск задания каждые 10 минут:

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

вы можете найти больше примеров в узел-cron-а wiki

больше о конфигурации cron можно найти на cron wiki

Я использую эта библиотека во многих проектах, и она делает свою работу. Надеюсь, это поможет.


я использовал узел-cron и повестка дня.

узел-cron это очень простая библиотека, которая обеспечивает очень простой и простой для понимания api, как crontab. Он не нуждается в какой-либо конфигурации и просто работает.

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

повестка дня очень мощный и подходит для гораздо более сложных услуг. Думал о частичное будильника, вы должны выполнить миллионы задач. повестка дня было бы лучшим выбор.

Примечание:в MongoDB использовать

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

Я написал модуль узла, который предоставляет оболочку вокруг setInterval, используя длительность момента, предоставляющую декларативный интерфейс:

npm установить каждый момент

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


Я думаю, что лучший рейтинг-это

1.узел-расписание

2.позже!--2-->

3.crontab

и образец узел-графика ниже:

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

возможно, вы можете найти ответ от узел модули.


nodeJS по умолчанию

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

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

Я написал небольшой модуль для этого. Вы можете найти его here:
https://github.com/paragi/timexe.git
https://www.npmjs.com/package/timexe

некоторые из особенностей:

  • его простой,небольшой надежный код и не имеет зависимостей