繁体   English   中英

有没有办法在子进程中运行节点任务?

[英]Is there a way to run a node task in a child process?

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

  1. 服务网页
  2. 不断查询外部REST API,并将数据保存到数据库,然后将数据发送到客户端,以进行REST API的某些更新。

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

有人可以建议吗? 谢谢。

要使第二个node.js应用程序与第一个node.js应用程序同时运行,您可以创建另一个node.js应用程序,然后使用child_process.spawn()从第一个node.js应用程序运行。 它可以定期查询外部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机制。

任务1: Express是完成此任务的好方法。 您可以浏览: http : //expressjs.com/

任务2:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM