Node JSを使用して、特定の時間間隔で3つの機能を実行したい。この記事を読みましたが、さまざまな間隔でタスクを実行できる Nodejs スケジューラが必要です。
私は試してみましたnode-cron
とnode-schedule
。しかし、それは機能していません!!
私のコードは以下のようなものです。
var schedule = require('node-schedule')
var fs = require('fs')
var tar = require('tar')
var notification = require('./notification')
let changeInDir = function () {
console.log('Testing CRON JOB !!!', new Date().toLocaleString())
fs.watch('./test', (event, filename) => {
console.log('a', event, 'event occurred.. on file', filename)
})
}
// schedule a CRON Job
var changeFile = schedule.scheduleJob('4 * * * * *', changeInDir);
// send the Monthly snapshots
var monthlySnapshot = schedule.scheduleJob('5 * * * * *', notification.getViewDetails('Monthly'))
// send the Daily snapshots
var dailySnapshot= schedule.scheduleJob('10 * * * * *', notification.getViewDetails('Daily'))
私はそれがいることを望んmonthlySnapshot
で動作します5 seconds
間隔中dailySnapshot
に実行される10 seconds
間隔とchangeFile
で実行されます4 seconds
間隔。
次にmonthlySnapshot
、dailySnapshot
MySQL データベースにアクセスしてデータを取得し、それに応じて電子メールを送信します。changeFile
と他のコメントのみをスケジュールすると、正常に動作します。しかし、3 つすべてを実行しようとすると、次のエラー メッセージが表示され、クラッシュしました。
C:\Users\asau\Documents\LeaderBoardNodejs\archlb\src\server\node_modules\node-schedule\lib\schedule.js:174
this.job.execute();
^
TypeError: this.job.execute is not a function
at Job.invoke (C:\Users\asau\Documents\LeaderBoardNodejs\archlb\src\server\node_modules\node-schedule\lib\schedule.js:174:14)
at Timeout._onTimeout (C:\Users\asau\Documents\LeaderBoardNodejs\archlb\src\server\node_modules\node-schedule\lib\schedule.js:542:11)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
[nodemon] app crashed - waiting for file changes before starting...
それを解決するには?node-cron
orを使った例node-schedule
は何でもOKです。
nodemon notification.js
メールのみを使用して正しく送信すると、データベースへのアクセスは正常に機能します。問題はありません。
私はノード cron を使用しますhttps://www.npmjs.com/package/cron
var momentTz = require('moment-timezone');
var CronJob = require('cron').CronJob;
var job = new CronJob('*/4 * * * * *', function() {
var a = momentTz.tz("Europe/Helsinki");
//your logic
}, function () {
console.log('work ended');
},
true,
'Europe/Helsinki'
);
job.start();
4秒ごとに実行されます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加