Чи існує бібліотека планувальників завдань для node.js? [зачинено]


155

Чи є якась бібліотека, схожа на крон, яка дозволила б мені запланувати якусь функцію, яку слід виконувати на певний час (наприклад, 15:30, а не x годин з цього часу тощо)? Якщо немає такої бібліотеки, як це слід реалізувати? Чи потрібно просто встановити зворотній дзвінок, який потрібно дзвонити щосекунди, і перевірити час і почати завдання, заплановані на час, або що?


4
node-cron здається дуже хорошим варіантом
JtR

var-розклад = вимагати ('вузол-графік'); найкращі речі. ура !!!
Saumyajit

Відповіді:


122

node-cron робить саме те, що я описав


4
ви пишете декларації cronjob у app.js / scriptpts.js?
АрВан

чи дозволяє node-cron вам редагувати завдання системи cron з node.js? Чи це залежить від запущеного процесу вузла? чи це дозволить запускати програми навіть після того, як ваш основний процес припиняється?
Аджар

5
@Ajar ні, після закінчення процесу nodejs всі завдання будуть втрачені. Таблиця cron, що постачається з node-cron, немає
Upvote

1
Гадаю, так @ChrisC. Якщо я не використовую жодної основи, я оголошую крони в app.js. В sails.jsЯ роблю цеbootstrap
Арва

2
@arVan, якщо ви зацікавлені, я фактично почав працювати над тим, agendaщоб додати тут підтримку Waterline: github.com/mikermcneil/agenda (буквально щойно розпочався - мав би бути певний зручний прогрес до наступного тижня)
mikermcneil

44

вузол-графік Крон-подібний і не-подібний планувальник завдань для Node.


2
Це вдається уникнути іноді заплутаного синтаксису crontab, і, на мою думку, трохи читабельніше.
Саймон Схід

як і порядок денний, він намагається забезпечити наполегливість 0,1.13
drdrej

5
вузол-графік не забезпечує стійкості. За документами: Note that node-schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes.
Майк Хедман

34

порядок денний - це легке планування завдань для вузла. Це вам допоможе.


1
порядок денний базується на node-cron із стійким шаром (mongo). тому відповідь вище краще.
drdrej

51
Щоб уточнити, як автор порядку денного, насправді він взагалі не базується на node-cron ...
Райан

1
Бібліотека порядку денного - це єдина і найкраща бібліотека, оскільки налаштування просте, а користування легко для користувача. Kudos @Ryan
Vimalraj Selvam

4
Я виявив agendaнепослідовну поведінку і не радив би її використовувати. Перевірте відкриті проблеми та PR, щоб здійснити власний дзвінок.
Russbear

2
Будьте в курсі, порядок денний не готовий до виробництва. У ньому є проблеми з витоком пам'яті та перевірка на наявність проблем. Ще багато клопів. Коли буде готово, це виглядає перспективно.
Себастьян

15

later.js - досить хороша бібліотека JavaScript "планувальник". Може працювати на Node.js або у веб-браузері.


3
Я спробував декілька пропозицій у цій темі, але цей модуль виявився найзручнішим та зручним для роботи з ним .. дякую!
Джин Бо

12

Я використовую kue: https://github.com/learnboost/kue . Це досить приємно.

Офіційні функції та мої коментарі:

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

Редагувати:

  1. kue - не бібліотека, схожа на крон.
  2. За замовчуванням kue не підтримує роботу, яка працює повторно (наприклад, щонеділі).

6
Kue - черга на роботу, а не планувальник.
Леонід Бещасний

1
@LeonidBeschastny Kue - черга на роботу. І це також планувальник, тому що він може "дозволити мені запланувати якусь функцію, яку слід виконувати на певний час".
Вінс Юань

Я думав, що роботу з Kue можна затримати, але не заплановано на певний час.
Леонід Бещасний

@LeonidBeschastny Ви праві. Kue не надає api для планування роботи на певний час. Але, як я вже згадував, "Якщо ви хочете дозволити роботі виконуватись у визначений час, обчисліть мілісекунди між тим часом і зараз. Зателефонуйте job.delay (мілісекунди) (Доктор говорить хвилини, що неправильно.)" Це дуже просто .
Вінс Юань

1
Ви можете спробувати kue-планувальник, схожий на
аганду

9

node-crontab дозволяє редагувати завдання системи cron з node.js. Використання цієї бібліотеки дозволить запускати програми навіть після завершення основного процесу. Відмова: Я розробник.


значить, зберігається, якщо сервер вузлів буде скинутий?
jonperl


Так, робочі місця зберігаються.
Благо

його ліцензія GPL, тому не використовується в комерційному проекті.
drdrej

5
Ліцензія тепер MIT
Благо,

8

Ви можете використовувати timexe

Він простий у використанні, невелика вага, не має залежностей, має вдосконалений синтаксис над кроном, з роздільною здатністю в мілісекундах і працює в браузері.

Встановити:

npm install timexe

Використання:

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

(Я автор)


Чи можу я отримати приклад для цього, будь ласка?
Олексій

1
Перегляньте приклади на github: github.com/paragi/timexe
Simon Rigét

2

Я аухор node-runnr . Це дуже простий підхід до створення роботи. Також дуже просто і зрозуміло декларувати час і інтервал. Наприклад, щоб виконати завдання кожні 10 хв 20 сек,

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

Щоб щодня робити роботу о 10:00 та 15:00,

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

Це так просто. Детальніше: https://github.com/Saquib764/node-runnr



1

І вузол-графік, і node-cron ми можемо використовувати для впровадження планових механізмів на основі кронів.

ПРИМІТКА : для генерації виразів cron ви можете використовувати цей cron_maker


0

Це не підходить для всіх, але якщо у вашій програмі вже налаштовано приймати команди через сокет, ви можете використовувати netcat для видачі команд через cron.

echo 'mycommand' | nc -U /tmp/myapp.sock
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.