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


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

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

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

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

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

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

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

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

6 99

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

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

Примечание: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.позже

3.кронтаб

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

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 default

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

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

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

некоторые функции:

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