Как сделать отложенное выполнение задач (планировщик) на nodejs?

Есть какие-нибудь удобные библиотеки? Пример того, что я хочу реализовать - отложенная отправка сообщение, ну или будильник. Есть база(json), где есть timestamp, нужно, когда время сервера совпадает со времен в базе сделать какое-то действие. Единственная реализация, до которой я дошёл - это бесконечный цикл, который сверяет серверное время и время в базе + какая-то погрешность, на время выполнения условия. Правильно ли это, если в теории подобных записей в базе будет много? Или есть какое-то красивое решение?
  • Вопрос задан
  • 934 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Israfil22
Если Вас интересуют готовые решения, может быть этот пакет будет полезным.
Но в теории, если нежелательны частые обращения к базе данных, вы можете раз в N минут проходить по базе данных и собирать все записи, которые должны быть выполнены в интервале от Сейчас до Сейчас + N*2, а далее создавать сеттаймауты с указанным промежутком. Однако необходимо помнить о расходах памяти при создании большого количества отложенных вызовов.

Также, необходимо помнить о том, что со структурированными данными проще работать. Если позволяет архитектура хранилища, вы можете хранить данные в отсортированном виде, и тогда вы можете просто доставать все записи по одной.
Допустим, одна задача должна быть выполнена в 10000 секунды с эпохи эпоч, вторая 10100.
Достаньте первую запись, установите на нее таймаут выполнения(10000), со следующей прочитайте время выполнения - установите его как следующую итерацию такого "цикла"(10100 минус дельта). (планирование выполнения и планирование создания нового таска)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы