0

在我的应用程序中,我使用节点缓存来保存一些经常需要的数据。这些数据可以更改,因此我使用 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);
4

0 回答 0