Мне пришлось сделать что-то очень похожее, вы можете использовать модуль npm node-schedule
Планировщик узлов имеет много функций.Вы можете сначала создать свою настройку правила, которая определяет, когда она запускается, а затем планирует задание, в котором определяется, что задание выполняет, и активирует его. Ниже приведен пример из моего кода, который устанавливает задание для запуска в полночь каждый день.
var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0, new schedule.Range(1, 6)];
var j = schedule.scheduleJob(rule, function(){
sqlUpdate(server);
});
Это может не совсем соответствовать всем вашим требованиям, но есть другие функции и настройки, которые вы можете сделать.
Например, вы можете отменить любую работу с помощью функции отмены
j.cancel()
Вы также можете установить время начала и окончания, как показано на странице npm
let startTime = new Date(Date.now() + 5000);
let endTime = new Date(startTime.getTime() + 5000);
var j = schedule.scheduleJob({ start: startTime, end: endTime, rule: '*/1 * * * * *' }, function(){
console.log('Time for tea!');
});
Существуют также другие варианты планирования даты и времени, так как они также соответствуют формату cron.,Это означает, что вы можете установить динамическое время
var j = schedule.scheduleJob('42 * * * *', function(){
console.log();
});
Таким образом, это позволит node.js обрабатывать все, что вам нужно.Скорее всего, вам потребуется настроить систему для отслеживания запланированных заданий (вар. J), но это позволит вам отменить ее и запланировать по вашему желанию.
Кроме того, это может позволить вам перепланировать, получитьследующее запланированное событие, и вы можете иметь несколько форматов даты.
Если вам нужно сохранить задания после того, как процесс будет включен, включен или сброшен, вам необходимо сохранить сведения о задании, база данных MySQL будетздесь есть смысл, и после запуска код может быстро вытянуть и перезапустить все созданные задачи на основе данных из базы данных.А когда вы отменяете работу, вы просто удаляете ее из базы данных.Следует отметить, что процесс должен быть включен, чтобы задание работало, задание не будет запущено, если процесс выключен