Мне нужен планировщик Nodejs, который позволяет выполнять задачи с разными интервалами [закрыто]
Я ищу расписание работы узла, которое позволит мне планировать ряд задач с разными интервалами. Например,
- вызывайте функцию a каждые 30 секунд
- вызывайте функцию B каждые 60 секунд
- вызывайте функцию C каждые 7 дней
Я также хочу, чтобы иметь возможность запускать и останавливать процесс.
до сих пор я смотрел на:
позже - синтаксис меня смущает, также, по-видимому, вы не можете планировать задачи за месяц
повестка дня - кажется наиболее перспективным, однако я запутался в функциональности базы данных
timeplan - слишком просто, не может начать и остановить
Я нахожу синтаксис последнего запутанным.
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(); });
Я думаю, что лучший рейтинг-это
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некоторые функции:
- его простой,небольшой надежный код и не имеет зависимостей