我有路线
app.get('/posts', function (req, res) {
res.json([
// data
]);
// what would happen to the code below
// Suppose it is processing a million records
processMillionRecords();
});
function processMillionRecords () {
// process million records
}
一旦发送了响应,就会调用另一个函数,这是一项非常昂贵的操作。如果继续这会怎么样?有什么影响吗?
我知道这样做的理想方法是使用后台进程。所以我用下面的代替了它。
res.json([
// data
]);
var child = require('child_process');
child.fork('worker.js');
// worker.js
function processMillionRecords () {
// process million records
}
哪一个更受欢迎?在哪种情况下?
答案 0 :(得分:2)
构建节点以处理长异步操作。除非CPU非常重,否则您可能不需要分叉新的工作进程。只需将您的processMillionRecords写成异步,并确保它不会阻止事件循环。
答案 1 :(得分:0)
上述情况会发生什么(如蒂莫西所述),是:
如果您构建的应用程序需要大量流量或大量CPU密集型工作负载,最好将这些内容移动到专门用于处理长时间运行任务的单独服务器中。这减少了:
的机会希望有所帮助。