Вы можете сохранить задачи в базе данных, например:
{
_id: String,
status: Enum,
executionTime: timestamp,
}
Когда вы объявляете новую задачу, вставьте новую запись в БД.
При запуске сервера или при объявлении новой задачи создайте setTimeout
, который будет запускать ваш файл node.js, когда это необходимо.
Оптимизация
Чтобы избежать X setTimeout
, с X номер задачи для выполнения.Оставьте только одну setTimeout
, при этом время ожидания равно ближайшей для выполнения задаче.
Например, у вас есть три задачи: одну нужно выполнить за 1 час, одну за 2 часа и одну за 3 часа,Используйте setTimeout
1 час.Когда он запускается, он выполняет задачу 1, а затем просматривает оставшиеся задачи для повторного запуска.