如何获取所有请求的状态到nodejs中的一个API

我想在nodejs中获得API服务器状态。 我正在使用nodejs打开一个接口:“api / request?connId = 50&timeout = 90”。 该API将保持请求在服务器端运行提供的时间。 提供的时间成功完成后,应返回状态/确定。 当我们有多个连接ID&超时时,我们希望API返回服务器上的所有运行请求,剩下的时间完成,如下所示,其中4和8是connId ,25和15是剩余时间请求完成(以秒为单位):

 {"4":"25","8":"15"} 

请帮忙。

Node.js服务器在一个单线程中使用asynchronous模型,这意味着在任何时候只有一个请求( connId )正在被Node执行(除了…你有多个node.js实例,但是让我们保持简单并忽略这个案例)。

当处理一个请求(运行它的处理程序代码)时,它可能会启动一个asynchronous任务,如读取文件,然后继续执行。 请求本身的处理程序代码将在不等待asynchronous任务的情况下执行,并且当这个处理程序代码完成运行时,从Node.js的angular度来看,请求处理本身就完成了 – 处理asynchronous任务的结果是另一回事时间,节点不关心它的进度。

因此,为了返回所有请求的剩余时间 – 我想这是其他请求的asynchronous任务的剩余时间,因为其他请求的处理程序代码执行的剩余时间没有任何意义,必须有一些地方来存储信息所有请求,包括:

  • 请求的connId和startTime(收到请求的时间)。
  • 请求的timeout值,作为URL中的parameter passing。
  • 请求的估计剩余时间,这些信息是特定于任务的,并且必须从其他asynchronous任务相关服务中检索(您可以使用setInterval逐个setInterval时间,或者使其他服务推送最新的剩余时间)。 Node.js不知道任何asynchronous任务的剩余时间信息。

通过这种方式,您可以跟踪所有正在运行的请求及其剩余时间。 在返回一个请求之前,您可以检查上面的“某个地方”来计算所有请求的剩余时间。 这个“某个地方”可能是全局variables,像Redis这样的内存数据库,甚至像MySQL这样的普通数据库。

请注意:计算的剩余时间将不准确,因为读取和计算本身会花费时间并引入错误。