Node/Express:运行 特定 CPU 后台密集型任务

Node/Express: running specific CPU-instensive tasks in the background

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

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

我绝对希望将计算保留在服务器上,这样 web worker 就不会在这里工作了。这里有一个子进程就足够了吗?或者我应该在后台有一个单独的线程 运行ning 来处理所有 /api/admin 调用吗?

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

可以接受 API 至 :

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

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