Reputation: 1961
Lets say I have 100,000 user records. I want to send them daily job alert at 10:00 PM using nodejs node-mailer
.
If I query all of them at one time and send the active jobs, it will give Javascript heap out of memory
. So I decided to follow following steps.
So what I decided is to start nested node-scheduler
. First scheduler should start at 10:00 PM and the Nested scheduler should run every 15 minutes.
schedule.scheduleJob("*/2 * * * *", async () => {
console.log("Parent --------every two minutes---------------------------");
let count= 1;
schedule.scheduleJob("*/5 * * * * *", async () => {
console.log("Nested ------------every 5 seconds-----------------------", ++count);
});
});
Result of above code :
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
Problem, the nested scheduler does not restart after two minutes.
Solution, the nested scheduler should restart every two minutes .
I dont know how to do it.
Any solution for this would be appreciate it.
Upvotes: 0
Views: 268
Reputation: 2910
This happens since you create a new job every 15 minutes without stopping the old job. You may simply stop the old job before starting the new job.
let oldJob = null;
schedule.scheduleJob("*/2 * * * *", async () => {
console.log("Parent --------every two minutes---------------------------");
let count = 1;
if (oldJob) {
oldJob.cancel();
}
oldJob = schedule.scheduleJob("*/5 * * * * *", async () => {
console.log("Nested ------------every 5 seconds-----------------------", ++count);
});
});
Upvotes: 1