Node / Express:在后台运行特定的CPU-instensive任务

时间:2015-07-23 18:24:53

标签: node.js multithreading express child-process

我有一个网站可以进行标准的数据绑定调用,但是还有一些CPU密集型任务,每天运行几次,主要由管理员执行。

这些任务包括从数据库中获取数据,运行一些耗时的不同算法,然后重新上载数据。制作这些调用并让它们在不阻塞事件循环的情况下运行的最佳方法是什么?

我当然希望在服务器上保留计算,以便网络工作人员不会在这里工作。这里的儿童过程是否足够?或者我应该在后台运行单独的线程来处理所有/api/admin次呼叫吗?

1 个答案:

答案 0 :(得分:1)

Node.js中这个场景的基本答案是使用核心群集模块 - https://nodejs.org/docs/latest/api/cluster.html

这是一个可接受的API:

  • 在同一台机器上轻松启动worker node.js实例(每个实例都有自己的事件循环)
  • 为实例之间的短消息保留实时通信渠道

这样,在子实例中完成的任何工作都不会阻止你的主事件循环。