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