diff --git a/Dockerfile b/Dockerfile index 567758e..b131798 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/cron.js ./ COPY --from=builder --chown=nextjs:nodejs /app/email ./email RUN rm package.json RUN npm init -y -RUN npm i cryptr dotenv node-cron @googleapis/searchconsole +RUN npm i cryptr dotenv croner @googleapis/searchconsole RUN npm i -g concurrently USER nextjs diff --git a/cron.js b/cron.js index 62d98dd..833659e 100644 --- a/cron.js +++ b/cron.js @@ -1,7 +1,7 @@ const Cryptr = require('cryptr'); const { promises } = require('fs'); const { readFile } = require('fs'); -const cron = require('node-cron'); +const Cron = require('croner'); require('dotenv').config({ path: './.env.local' }); const getAppSettings = async () => { @@ -65,12 +65,12 @@ const generateCronTime = (interval) => { const runAppCronJobs = () => { // RUN SERP Scraping CRON (EveryDay at Midnight) 0 0 0 * * const scrapeCronTime = generateCronTime('daily'); - cron.schedule(scrapeCronTime, () => { + Cron(scrapeCronTime, () => { // console.log('### Running Keyword Position Cron Job!'); const fetchOpts = { method: 'POST', headers: { Authorization: `Bearer ${process.env.APIKEY}` } }; fetch(`${process.env.NEXT_PUBLIC_APP_URL}/api/cron`, fetchOpts) .then((res) => res.json()) - .then((data) => console.log(data)) + // .then((data) =>{ console.log(data)}) .catch((err) => { console.log('ERROR Making Daily Scraper Cron Request..'); console.log(err); @@ -79,7 +79,7 @@ const runAppCronJobs = () => { // Run Failed scraping CRON (Every Hour) const failedCronTime = generateCronTime('hourly'); - cron.schedule(failedCronTime, () => { + Cron(failedCronTime, () => { // console.log('### Retrying Failed Scrapes...'); readFile(`${process.cwd()}/data/failed_queue.json`, { encoding: 'utf-8' }, (err, data) => { @@ -104,7 +104,7 @@ const runAppCronJobs = () => { // Run Google Search Console Scraper Daily if (process.env.SEARCH_CONSOLE_PRIVATE_KEY && process.env.SEARCH_CONSOLE_CLIENT_EMAIL) { const searchConsoleCRONTime = generateCronTime('daily'); - cron.schedule(searchConsoleCRONTime, () => { + Cron(searchConsoleCRONTime, () => { const fetchOpts = { method: 'POST', headers: { Authorization: `Bearer ${process.env.APIKEY}` } }; fetch(`${process.env.NEXT_PUBLIC_APP_URL}/api/searchconsole`, fetchOpts) .then((res) => res.json()) @@ -122,7 +122,7 @@ const runAppCronJobs = () => { if (notif_interval) { const cronTime = generateCronTime(notif_interval === 'daily' ? 'daily_morning' : notif_interval); if (cronTime) { - cron.schedule(cronTime, () => { + Cron(cronTime, () => { // console.log('### Sending Notification Email...'); const fetchOpts = { method: 'POST', headers: { Authorization: `Bearer ${process.env.APIKEY}` } }; fetch(`${process.env.NEXT_PUBLIC_APP_URL}/api/notify`, fetchOpts) diff --git a/package-lock.json b/package-lock.json index 108edb1..5b94216 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "cheerio": "^1.0.0-rc.12", "concurrently": "^7.6.0", "cookies": "^0.8.0", + "croner": "^5.3.5", "cryptr": "^6.0.3", "dayjs": "^1.11.5", "dotenv": "^16.0.3", @@ -3707,6 +3708,14 @@ "node": ">=10" } }, + "node_modules/croner": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/croner/-/croner-5.3.5.tgz", + "integrity": "sha512-VqaplJOVtaGuAxhsw2HM9GG0DLpVi3W9IsV7bKMAC12O7wMIOcZpCYHBw+xkFABzT3xp5MvUqTfbTewCgxgN+A==", + "engines": { + "node": ">=6.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -15220,6 +15229,11 @@ "yaml": "^1.10.0" } }, + "croner": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/croner/-/croner-5.3.5.tgz", + "integrity": "sha512-VqaplJOVtaGuAxhsw2HM9GG0DLpVi3W9IsV7bKMAC12O7wMIOcZpCYHBw+xkFABzT3xp5MvUqTfbTewCgxgN+A==" + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", diff --git a/package.json b/package.json index f89685d..19b589d 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "cheerio": "^1.0.0-rc.12", "concurrently": "^7.6.0", "cookies": "^0.8.0", + "croner": "^5.3.5", "cryptr": "^6.0.3", "dayjs": "^1.11.5", "dotenv": "^16.0.3",