在收到响应之前,Node.js请求已丢弃

时间:2018-08-14 03:09:55

标签: javascript node.js

我正在处理的项目是接收一个请求,该请求的主要和/或大部分都包含来自数据库的数据。接收后,我的系统继续执行其功能,即解析所有数据并最终将所需的信息连接起来以形成查询,然后使用提及的查询将这些数据插入我的本地数据库。

它工作正常,完全没有问题。除了请求超过6,000,000个字符和200,000行(或更少,但仍然有大量数字)时处理时间太长的事实。

我已经在将我的系统用作服务器(在生产环境中使用假定的设置)以及Postman进行了此测试,但是在建立和发送最终响应之前,两者都会断开连接。我已经测试过,尽管连接断开了,但我的系统仍然继续处理数据,直到查询为止,甚至直到发送假定的响应为止。但是由于请求在处理过程中的某个地方掉了,所以响应被忽略了。

这与nodejs中的连接超时有关吗? 还是在'app.use(bodyParser.json({limit:'10mb'}))'中限制?

1 个答案:

答案 0 :(得分:3)

我真的只看到一种解决方法。我过去也做过类似的事情。允许客户端发送您需要/想要的数量。但是,与其尝试让客户端等待一些不确定的时间(此时客户端可能会超时),不如发送一个立即响应,基本上是“我们收到了您的请求,我们正在处理它”。 >

现在还不是很重要,但这是我解决此类问题的唯一方法。在您的“处理中”响应中,发送回某种ID。现在,客户端可以不时地通过向您发送该ID来检查其请求是否已经完成。在服务器端,您通过为其提供的ID存储客户端的结果。您必须对诸如响应ID保留多长时间以及是否可以多次请求之类的事情做出一些决定。