节点工作进程/ cron作业build议

我有一个需要更新的项目数据库,或者说是经常执行的项目。 我正在使用一个消息队列(Kue)来处理这些作业的并发性,但是我的将作业添加到队列的过程如下所示:

setInterval(function () { feed.find({}, function (error, foundModels) { jobs.create('update feeds', { feeds: foundModels }).save() }) }, 6000) 

投票是这样的最好的方式将工作添加到队列中,你觉得呢? 或者每个feed应该在自己的计时器上(例如,每个饲料在完成后都会产生另一个作业6)?

我通常按​​照你做的方式来做。 就你而言,它总是以6秒的间隔推动作业。 只要您的工作时间不超过6秒就可以了。 如果你的工作需要6秒以上,那么你将开始积压,你需要增加资源来处理更大的负载。 这可能是一个问题,如果资源使用率激增,你不在适应峰值,你没有自动化的stream程(你应该)。

另一种方法是在最后一次调用返回后6秒钟才调用你的函数。 你会这样做:

 function update() { feed.find({}, function (error, foundModels) { jobs.create('update feeds', { feeds: foundModels }).save(function() { setTimeout(update,6000); }); }); } setTimeout(update, 6000); 

我假设你的.save方法像所有好的asynchronous库一样进行callback。 🙂