Мне нужен планировщик 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();
});
Я думаю, что лучший рейтинг-это
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
некоторые из особенностей:
- его простой,небольшой надежный код и не имеет зависимостей