我的 NodeJS 项目有一些长期运行的任务,我正在该项目上构建一个 RESTful 接口。
我想测试我的 REST 接口是否可以继续被访问,在运行时间较长的任务正在执行时提供状态更新。
在多线程环境中,这很容易测试,因为您只需让一个线程休眠一段时间,因为您的 HTTP 控制器在另一个线程中运行。这在 NodeJS 中显然是不可能的(由于单线程):)
我可以存根任务,但是如何让存根“等待”一段时间而不阻塞线程,以便我可以访问 REST 端点并获取状态更新?
假设您指的是 CPU 绑定的长时间运行任务。
解决此问题的最佳方法是将 CPU 绑定任务发送到子进程。您可以使用child_process包。
有了child_process
它,您可以生成新进程并通过管道与它们通信。让您的子进程期望标准输入上的数据并将结果写入标准输出。
您的 Node 进程可以在另一个进程中生成所有 CPU 绑定任务,同时继续为网络请求提供服务。
您还应该查看worker-farm软件包。