有没有办法在subprocess中运行节点任务?

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

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

任务1只是一个正常的节点任务。 但是我不知道如何执行任务2.这个任务不会暴露任何接口到外面。 这更像是一个背景任务。

有人可以build议吗? 谢谢。

要创build与第一个node.js应用程序同时运行的第二个node.js应用程序,可以创build另一个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和更新数据库都是asynchronous操作,所以它们不占用node.js进程的CPU。 因此,您不必在另一个node.js进程中执行这些操作。 您可以在主要node.js进程中只需要一个setInterval() ,每隔一段时间就查询一次API,当收到结果时更新数据库,然后直接访问socket.io连接向客户端发送数据,而无需使用一个单独的进程和某种IPC机制。

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

任务2:

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

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