Async/await 等非阻塞设计在多请求和 CPU 密集情况下是否会阻塞 Node
我是Node.js的新手,遇到了为node.js设计非块代码的问题。 首先选择async/await,如下:
router.post('/handleFiles', async(req, res) => {
// .....
try {
let qr1 = "INSERT INTO ........;"
await new Promise((res, rej) => {
pool.query(qr1, (err, row) => {
if (err) return rej(err);
res(row);
});
});
let qr2 = "UPDATE .....;"
await new Promise((res, rej) => {
pool.query(qr2, (err, row) => {
if (err) return rej(err);
res(row);
});
});
} catch (err) {
console.log(err)
}
});
如果 sql 需要 20 秒才能完成它的工作,在这种情况下,节点会阻塞其他节点吗? 要求?似乎还有其他选择做 CPU 限制的工作,比如 child_process,它会 以另一种方式进行,例如
var fork = require('child_process').fork;
app.get('/', function (req, res) {
var worker = fork('./SQL.js');
worker.on('message', function (m) {
res.send(m.result.toString());
})
});
worker.send({type:'insert', num:--req.query.n||10});
});
node.js 为请求执行繁重的加载工作的好的设计是什么, 并发以满足另一个请求? 非常感谢任何指示,非常感谢
回答如下: