在 NodeJS 中测试长时间运行的任务

kie*_*ans 4 rest node.js

我的 NodeJS 项目有一些长时间运行的任务,并且我正在该项目上构建一个 RESTful 接口。

我想测试我的 REST 接口是否可以继续访问,在执行较长时间运行的任务时提供状态更新。

在多线程环境中,这很容易测试,因为您只需让一个线程休眠一段时间,因为您的 HTTP 控制器在另一个线程中运行。这在 NodeJS 中显然是不可能的(由于单线程):)

我可以存根任务,但如何让存根“等待”一段时间而不阻塞线程,以便我可以访问 REST 端点并获取状态更新?

Dan*_*iel 6

假设您指的是 CPU 密集型长时间运行的任务。

解决此问题的最佳方法是将 CPU 密集型任务发送到子进程。您可以使用child_process包。

您可以使用child_process它生成新进程并通过管道与它们进行通信。让您的子进程期望标准输入上的数据并将结果写入标准输出。

您的 Node 进程可以在另一个进程中生成所有 CPU 密集型任务,同时继续服务网络请求。

您还应该查看工人农场套餐。