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

时间:2013-04-14 01:36:08

标签: node.js rest

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

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

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

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

1 个答案:

答案 0 :(得分:4)

假设您指的是CPU绑定的长时间运行任务。

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

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

您的节点进程可以在继续为网络请求提供服务的同时,在另一个进程中生成所有CPU绑定任务。

您还应该查看worker-farm包。