是否可以在 NodeJs 中创建一个长 运行 进程

Is it possible to create a long running process in NodeJs

是否可以在 NodeJs 中创建一个长 运行 进程来处理许多后台操作而不中断主线程; Python.

中的芹菜之类的东西

提示,最好能够管理那个长 运行 进程,以防出现故障或需要重新启动,远离主进程。

您可以创建子进程来处理您的后台操作。然后使用消息在新进程和你的主线程之间传递数据。

http://nodejs.org/api/child_process.html

更新

看来您需要使用服务器队列,类似于 beanstalkd http://kr.github.io/beanstalkd/ + https://www.npmjs.com/package/fivebeans

http://nodejs.org/api/child_process.html有权API创建long-running个进程,您将完全控制child个进程(访问stdin/out/err,可以发送信号等)。 然而,这种方法要求您的节点进程是那些 children. 中的 parent 个。如果您希望 child 的寿命比 parent 长,请查看 child 创建期间的 options.detached(以及 child.unref() 之后)。

但是请注意,Node.js 非常适合避免这种架构。通常 node.js 在主线程中完成所有后台工作。我一直在编写流量很大的应用程序(比如每秒数千个请求),DB、Redis 和 RabbitMQ 都从主线程访问,没有任何 child 进程——它运行良好,应该如此,感谢 Node 的事件 IO 系统。

我一般只使用 child_process api 来启动单独的可执行文件(例如 ffmpeg 来转码一些视频文件),除了这种情况之外,单独的进程可能不是你想要的。

还有集群 api 允许单个主控处理多个工作进程,但我认为这也不是你要找的。