Есть ли библиотека планировщика заданий для node.js?

Есть ли какая-то cron-библиотека, которая позволила бы мне планировать запуск какой-либо функции в определенное время (например, 15:30, а не x часов отныне и т. Д.)? Если нет такой библиотеки, как это должно быть реализовано? Должен ли я просто устанавливать обратный вызов для вызова каждую секунду и проверять время и запускать задания, запланированные на время или что?

node-cron делает то, что я описал

node-schedule Планировщик заданий типа cron-like и not-cron для узла.

повестка дня – это легкое планирование заданий для узла. Это поможет вам.

later.js – довольно хорошая библиотека «планировщик» JavaScript. Может работать на Node.js или в веб-браузере.

Я использую kue: https://github.com/learnboost/kue . Это довольно хорошо.

Официальные функции и мои комментарии:

  1. отложенные задания.
    • Если вы хотите, чтобы задание выполнялось в определенное время, вычислите миллисекунды между этим временем и сейчас. Call job.delay (миллисекунды) (Док говорит минуты, что неверно.) Не забудьте добавить «jobs.promote ();» когда вы начинаете работу.
  2. событие работы и прогресс pubsub.
    • Я этого не понимаю.
  3. богатый интегрированный интерфейс.
    • Очень полезно. Вы можете проверить статус задания (выполненный, запущенный, отложенный) в интегрированном пользовательском интерфейсе и не нужно писать какой-либо код. И вы можете удалить старые записи в пользовательском интерфейсе.
  4. бесконечная прокрутка
    • Иногда не работает. Придется освежиться.
  5. Индикатор выполнения пользовательского интерфейса
    • Хорошо подходит для трудоемких рабочих мест.
  6. специальная регистрация
    • Поскольку они задерживают задания, вы должны регистрировать полезную информацию в задании и позже проверять пользовательский интерфейс.
  7. Работает на Redis
    • Очень полезно. Когда вы перезагружаете приложение node.js, все записи о работе все еще существуют, и запланированные задания будут выполняться тоже!
  8. необязательные попытки
    • Ницца.
  9. возможности полнотекстового поиска
    • Хорошо.
  10. API RESTful JSON
    • Звучит неплохо, но я никогда не использую его.

Редактировать:

  1. kue не является библиотекой cron.
  2. По умолчанию kue не поддерживает задание, которое выполняется многократно (например, каждое воскресенье).

node-crontab позволяет редактировать системные задания cron из node.js. Использование этой библиотеки позволит вам запускать программы даже после завершения основного процесса. Отказ от ответственности: Я разработчик.

Вы можете использовать timexe

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

Установка:

 npm install timexe 

Использование:

 var timexe = require('timexe'); var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); }); 

(Я автор)

Я являюсь auhor node-runnr . У него очень простой подход к созданию работы. Также очень легко и понятно объявить время и интервал. Например, чтобы выполнить задание каждые 10 минут 20 секунд,

 Runnr.addIntervalJob('10:20', function(){...}, 'myjob') 

Чтобы выполнять работу в 10 утра и 3 вечера ежедневно,

 Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob') 

Это так просто. Для получения дополнительной информации: https://github.com/Saquib764/node-runnr

Как node-schedule, так и node-cron мы можем использовать для реализации планировщиков на основе cron.

ПРИМЕЧАНИЕ . Для генерации выражений cron вы можете использовать этот cron_maker

Это не подходит для всех, но если ваше приложение уже настроено выполнять команды через сокет, вы можете использовать netcat для выдачи команд через cron.

 echo 'mycommand' | nc -U /tmp/myapp.sock 

Все эти ответы и никто не указал на самый популярный пакет NPM .. cron

https://www.npmjs.com/package/cron

Interesting Posts

Файл Mongoimport json

Как преобразовать файл .eps в высокое качество 1024×1024 .jpg?

Как я могу получить список стека вызовов в Perl?

В чем разница между Intel Core i7-4770 и i7-4790?

Можно ли указать схему при подключении к postgres с JDBC?

C ++ сортировка и отслеживание индексов

Каков самый простой способ конвертировать MPEG видео в формат FLV?

Нарисуйте несколько рисунков полилинии или кривых свободной руки – добавление функции отмены

Почему моя макро переменная не будет решена?

Рекурсивная проверка с помощью Clearcase

Пусть пользователи MySQL создают базы данных, но разрешают доступ только к собственным базам данных

FragmentPagerAdapter getItem не вызывается

UIWebView: когда страница действительно заканчивала загрузку?

Поврежденные файлы NTFS (нет такого файла или каталога); Могу ли я исправить их под Linux?

sed не дает мне правильную операцию замены для новой строки с Mac – различия между GNU sed и BSD / OSX sed

Давайте будем гением компьютера.