node.js Web 应用程序中的 cron 作业

node.js cron job in web app

我使用 express.js 和 'cron' 模块进行自动数据库更新,所以我不知道应该在哪里添加我的 cron init 代码,所以我将它添加到我的 'bin/www' 中,但是服务器启动后,它每隔几秒发送一次垃圾邮件(但我需要每 2 分钟发送一次),但如果我在 5 上更改 2,它就永远不会启动。 这是我的 cron 更新 js:

var catalogUpdater = require('../utils/catalogUpdater');
var descriptionDownloader = require('../utils/descriptionDownloader');

var CronJob = require('cron').CronJob;

var job = new CronJob('* */2 * * * *', function(){ 
    console.log('started');

}, 
function(){console.log('stop')},
true);

module.exports = job;

这是我的“bin/www”代码:

var app = require('../app');
var debug = require('debug')('shopnagby:server');
var http = require('http');
var config = require('../config');

var job = require('../cron/updateCron'); // include job updateCron to server startup;

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(config.get("port"));
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
.....

我应该把 updateCron 脚本放在哪里?

您的 cron 语法不正确。 Correct syntax 只有 5 个字段:

                field          allowed values
                -----          --------------
                minute         0-59
                hour           0-23
                day of month   0-31
                month          0-12 (or names, see below)
                day of week    0-7 (0 or 7 is Sun, or use names)

每两分钟到运行:

var job = new CronJob('*/2 * * * *', function(){ 
  console.log('started');
}, 
function(){console.log('stop')},
true);