node.js - 有没有办法在子进程中运行 Node 任务?

标签 node.js

我有一个 Node 服务器,它需要:

  1. 提供网页
  2. 继续查询外部 REST API,将数据保存到数据库,并将数据发送到客户端以获取来自 REST API 的某些更新。

任务1只是一个普通的 Node 任务。但我不知道如何实现任务2。该任务不会向外部暴露任何接口(interface)。它更像是一个后台任务。

有人可以建议吗?谢谢。

最佳答案

要创建与第一个应用程序同时运行的第二个 Node.js 应用程序,您只需创建另一个 Node.js 应用程序,然后使用 child_process.spawn() 从第一个应用程序运行它。它可以定期查询外部REST API并根据需要更新数据库。

关于“从 REST API 向客户端发送某些更新的数据”的部分不太清楚您想要做什么。

如果您使用 socket.io 向连接的浏览器发送数据,那么浏览器必须连接到您的 Web 服务器,我认为这是您的第一个 Node.js 进程。要让第二个 Node.js 进程导致数据通过第一个 Node.js 进程中的 socket.io 连接发送,您需要某种进程间通信方式。您可以通过 child_process.spawn() 使用 stdout 和 stdin,您可以使用数据库中的某些功能或任何其他 IPC 方法。

由于查询 REST API 和更新数据库都是异步操作,因此它们不会占用 Node.js 进程的太多 CPU。因此,您实际上不必在另一个 Node.js 进程中执行这些操作。您可以在主 Node.js 进程中使用 setInterval(),每隔一段时间查询 API,在收到结果时更新数据库,然后您可以直接访问 socket.io 连接以将数据发送到客户端,而无需使用单独的进程和某种 IPC 机制。

关于node.js - 有没有办法在子进程中运行 Node 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932668/

相关文章:

node.js - Microsoft Graph OAuth2 撤销/无效刷新 token node.js

node.js - 如何在 Puppeteer 中获取所有请求 header

node.js - 为什么 node.js 不释放内存?

node.js - 如何在环回中渲染html页面

node.js - 在macOS Sierra上,npm install odbc失败(版本10.12.6)

json - 尝试从 Node.js 将文档插入 CouchDB 时出现 ' bad_request invalid_json' 错误

javascript - Node.js - 重复 require ('path'/'module' ) 语句

sql - 使用 Node.js 从 MSSQL 请求数据 - 错误

javascript - 用 Mongoose 填充字段

node.js - Sails.js - PATH 变量 - 无法识别 sails 命令