ExpressJS请求挂起Mongoose保存

时间:2016-09-11 11:40:19

标签: node.js mongodb express mongoose

我运行时在我的服务器上

Apples.insertAll( [objects], function(err,docs){ .. logic ..})

我发送到快递路由器的请求开始挂起,我在大约20-30秒之前返回一个没有计算的简单响应

流程如下:

我的服务器获取带有一些信息的POST请求,检查是否已经收到请求,然后将响应发送回客户端(如果它的旧请求只返回响应)

如果第一次发送请求,服务器将开始处理它 接下来发生的事情是我有一个观察者与子目录,我发送一个事件给所有人(这个方法没有回调),如果它属于该服务,它开始工作,该服务从另一个服务器下载一些数据和存储它在我的数据库中供以后使用(约30k对象)

在保存数据之前,我将其标准化然后保存,我保存(在批处理命令中)Apples.insertAll( [array], (err,docs) => { .. logic ..}) (每种类型的对象有12种功能)

我使用async.series运行所有12个函数然后我将所有对象返回给服务,这样我就可以将它们传递给下一个应用程序

在当前步骤中,当我向快递发送请求时,响应将挂起,直到所有对象的整个保存完成为止

我"解决了#34;我的问题是用child_process分配这个服务,但是我不觉得这是一个正确的方法来解决这个问题,它会使调试程序的未来变得复杂,并且在NodeJS的基础上是单线程的

在探查器上我可以看到,在这些操作中,callTicks非常长,因此必须阻止快速操作

我希望我在我的问题中提出了一些意见,感谢您提供的任何帮助:)

0 个答案:

没有答案