使用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,但只会推事件。