有没有一种方法可以在子进程中运行节点任务



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

  1. 为网页提供服务
  2. 继续查询外部REST API,将数据保存到数据库,并将数据发送到客户端,以便从REST API进行某些更新

任务1只是一个普通的节点任务。但是我不知道如何执行任务2。此任务不会对外公开任何接口。这更像是一项后台任务。

有人能提出建议吗?谢谢

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

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

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

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

任务1:表达是完成这项任务的好方法。您可以探索:http://expressjs.com/

任务2:

如果你已经厌倦了Expressjs。然后,您可以在ExpressFramework中使用编写逻辑。然后可以使用节点模块永远来完成此任务。它是一个简单的工具,可以永远运行您的后台脚本。您可以使用forever来连续运行脚本(无论是否在node.js中编写)

看看:
https://github.com/foreverjs/forever

最新更新