在我的应用程序中,我使用节点缓存来保存一些经常需要的数据。这些数据可以更改,因此我使用 node-cron 定期启动子进程以从 Mongo 提取刷新数据并将其传递回节点缓存以覆盖键/值对。
中间件中需要数据。如果我在主 server.js 文件中运行 Cron 进程,一切正常,但显然无法在中间件中访问节点缓存数据。如果我在中间件中运行 Cron 进程......每次使用中间件时它都会运行 cron + 缓存进程(即触发子进程 +mongo 调用等,从而破坏了缓存 + cron 方法的目的)。
如何解决这个问题?谢谢。
启动缓存(通过子进程)的 Cron 代码如下所示:
var companyCache = companyCache || new cache();
new CronJob('0 */15 * * * *', function () {
var child = childProcess.fork(process.cwd() + "/lib/cacheCronWorker.js");//,[],{execArgv: ['--debug-brk=55555']});
console.log("initialized child process for cacheCron");
child.send('refresh_company_cache');
child.on('message', function (m) {
if (m !== 'done') {
// Receive results from child process
companyCache.set(m.key, m.currObj, function (err, success) {
if (err) {
console.log("node-cache hit an error: " + err)
}
if (!err && success) {
}
});
}
else if (m === 'done') {
console.log("company cache load is " + m + " disconnecting child process");
child.disconnect();
}
});
console.log('You will see this message every 15 min when we refresh the cache');
}, null, true, 'America/Chicago', null, true);