发送回复并继续执行Express |的任务 Node.js的

在Node.js(我是新手),我正在尝试接收响应后执行一系列的任务。 但是,我想尽可能快地做出响应。 我不需要将这些任务的结果返回给客户端,所以我试图立即返回响应。

我目前的实施大致是:

var requestTime = Date.now; app.post('/messages', function (req, res) { console.log("received request"); // handle the response var body = res.body; res.send('Success'); res.end(); console.log("sent response"); performComplexTasks(body) }) function performComplexTasks(body){ // perform data with body data here; console.log("finished tasks:", Date.now()-requestTime, "ms"); } // -------LOG----------- // received request // POST /api/messages 200 3.685 ms - 59 // sent response // finished tasks: 2500ms 

发出请求的客户似乎挂起,直到performComplexTasks()完成。 ( POST在3.685ms完成,但响应需要2500ms完成。)

有没有办法立即发送响应,并完成其他任务,而无需客户端等待/挂起? (在我的情况下,客户端不能进行多个API调用。)

我是对的,你试图在performComplexTasks执行CPU密集型工作? 如果是这样,那么事件循环被该任务locking,新的请求正在等待,直到作业完成。

在node.js中执行与http服务器相同的进程中的“复杂”任务是不好的做法。 考虑使用后台工作人员,队列或类似的东西。

有关详细信息,请参阅此主题: Node.js和CPU密集型请求