Допустим, у меня есть 100 000 записей пользователей. Я хочу отправлять им ежедневные уведомления о работе в 22:00, используя nodejs node-mailer
.
Если я запрошу все из них одновременно и отправлю активные задания, это даст Javascript heap out of memory
. Поэтому я решил выполнить следующие шаги.
- Начиная с 22:00.
- Отправка электронной почты для 1000 пользователей каждые 15 минут, пока все пользователи не завершат работу.
- Один и тот же процесс каждый день.
Итак, я решил начать вложенный node-scheduler
. Первый планировщик должен запускаться в 22:00, а Вложенный планировщик должен запускаться каждые 15 минут.
schedule.scheduleJob("*/2 * * * *", async () => {
console.log("Parent --------every two minutes---------------------------");
let count= 1;
schedule.scheduleJob("*/5 * * * * *", async () => {
console.log("Nested ------------every 5 seconds-----------------------", ++count);
});
});
Результат вышеприведенного кода:
Tue, 09 Apr 2019 06:40:10 GMT Nested ------------------- every five second---------------- 3
Tue, 09 Apr 2019 06:40:15 GMT Nested ------------------- every five second---------------- 4
Tue, 09 Apr 2019 06:40:20 GMT Nested ------------------- every five second---------------- 5
Tue, 09 Apr 2019 06:40:25 GMT Nested ------------------- every five second---------------- 6
Tue, 09 Apr 2019 06:40:30 GMT Nested ------------------- every five second---------------- 7
Tue, 09 Apr 2019 06:40:35 GMT Nested ------------------- every five second---------------- 8
Tue, 09 Apr 2019 06:40:40 GMT Nested ------------------- every five second---------------- 9
Tue, 09 Apr 2019 06:40:45 GMT Nested ------------------- every five second---------------- 10
Tue, 09 Apr 2019 06:40:50 GMT Nested ------------------- every five second---------------- 11
Tue, 09 Apr 2019 06:40:55 GMT Nested ------------------- every five second---------------- 12
Tue, 09 Apr 2019 06:41:00 GMT Nested ------------------- every five second---------------- 13
Tue, 09 Apr 2019 06:41:05 GMT Nested ------------------- every five second---------------- 14
Tue, 09 Apr 2019 06:41:10 GMT Nested ------------------- every five second---------------- 15
Tue, 09 Apr 2019 06:41:15 GMT Nested ------------------- every five second---------------- 16
Tue, 09 Apr 2019 06:41:20 GMT Nested ------------------- every five second---------------- 17
Tue, 09 Apr 2019 06:41:25 GMT Nested ------------------- every five second---------------- 18
Tue, 09 Apr 2019 06:41:30 GMT Nested ------------------- every five second---------------- 19
Tue, 09 Apr 2019 06:41:35 GMT Nested ------------------- every five second---------------- 20
Tue, 09 Apr 2019 06:41:40 GMT Nested ------------------- every five second---------------- 21
Tue, 09 Apr 2019 06:41:45 GMT Nested ------------------- every five second---------------- 22
Tue, 09 Apr 2019 06:41:50 GMT Nested ------------------- every five second---------------- 23
Tue, 09 Apr 2019 06:41:55 GMT Nested ------------------- every five second---------------- 24
Tue, 09 Apr 2019 06:42:00 GMT Nested ------------------- every five second---------------- 25
Tue, 09 Apr 2019 06:42:00 GMT Parent -----------------every two minute------------------
Tue, 09 Apr 2019 06:42:05 GMT Nested ------------------- every five second---------------- 2
Tue, 09 Apr 2019 06:42:05 GMT Nested ------------------- every five second---------------- 26
Tue, 09 Apr 2019 06:42:10 GMT Nested ------------------- every five second---------------- 27
Tue, 09 Apr 2019 06:42:10 GMT Nested ------------------- every five second---------------- 3
Tue, 09 Apr 2019 06:42:15 GMT Nested ------------------- every five second---------------- 4
Tue, 09 Apr 2019 06:42:15 GMT Nested ------------------- every five second---------------- 28
Tue, 09 Apr 2019 06:42:20 GMT Nested ------------------- every five second---------------- 29
Tue, 09 Apr 2019 06:42:20 GMT Nested ------------------- every five second---------------- 5
Tue, 09 Apr 2019 06:42:25 GMT Nested ------------------- every five second---------------- 6
Tue, 09 Apr 2019 06:42:25 GMT Nested ------------------- every five second---------------- 30
Tue, 09 Apr 2019 06:42:30 GMT Nested ------------------- every five second---------------- 31
Tue, 09 Apr 2019 06:42:30 GMT Nested ------------------- every five second---------------- 7
Проблема, вложенный планировщик не перезапускается через две минуты.
Решение: вложенный планировщик должен перезапускаться каждые две минуты.
Я не знаю, как это сделать.
Любое решение для этого будет оценено.