使用Node JS运行连续的后台作业

考虑有一个任务A和其他任务。 我想与其他n个任务并行运行任务A. 任务A只是每5秒钟从队列中获取数据。

我是新的节点JS。 有没有办法在后台运行这个任务/工作A还是有任何解决scheme?

取决于什么是任务。 如果我理解你的问题,你可以通过两种方法做到这一点:1,用计时器运行一个函数,2,产生一个subprocess。

1

function taskA(){...} setInterval(taskA,5000); 

2

 //same code as 1, but in a child process var spawn = require('child_process').spawn, ls = spawn('taskA.js'); //taskA.js has the code from example 1 

如果你在主进程中做了很多其他的事情,你可能更喜欢2比1,因为节点是单线程的。 还应该指出,在某些情况下可能有更好的方法来做到这一点。 例如,在一个基于云的web应用程序中,我可能依靠PAAS的服务来运行后台任务。 你也可能想看看https://github.com/nodejitsu/forever-monitor

这里有一篇关于如何在webapps中处理后台作业的文章。 https://devcenter.heroku.com/articles/background-jobs-queueing然而,它不是特定于节点的。 Heroku平台也是特定的。

你可以使用标准的setTimeout()方法。

 function task() { console.log("Timer"); setTimeout(task, 5000); } task(); 

看看Kue – https://github.com/LearnBoost/kue这是一个易于使用的节点消息队列系统。 基本上你会有一个节点程序,把东西放到队列中,和其他处理队列的进程。

所以,任务A会每5秒运行一次(如果你喜欢,或者其他系统)。 它会查看队列并处理相关的项目。 其他n个工作人员将分享configurationKue,但只会推事件。