javascript – 使用kue for node.js的唯一作业
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用kue for node.js的唯一作业,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2418字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 使用kue for node.js的唯一作业](/upload/InfoBanner/zyjiaocheng/799/f5183e5f4d58497bb5d9ea5f3edafd71.jpg)
如果系统中已有相同的作业,我希望jobs.create失败.有没有办法来实现这个?
我需要每24小时运行一次相同的工作,但有些工作可能需要超过24小时,所以我需要确保在添加它之前该工作尚未在系统中(活动,排队o失败).
更新:
好的,我将简化问题,以便能够在这里解释它.
为免我说我有分析服务,我必须每天向用户发送一次报告.有时完成这些报告(只有少数情况但有可能)需要几个小时甚至一天以上.
我需要一种方法来了解哪些是当前正在运行的作业以避免重复的作业.我在””””’API中找不到任何东西来知道当前正在运行的作业.此外,我需要在需要更多作业时触发某种事件,然后调用我的getMoreJobs生成器.
也许我的方法是错误的,如果是这样,请让我知道一个更好的方法来解决我的问题.
这是我的简化代码:
var kue = require('kue'),
cluster = require('cluster'),
numCPUs = require('os').cpus().length;
numCPUs = CONFIG.sync.workers || numCPUs;
var jobs = kue.createQueue();
if (cluster.isMaster) {
console.log('Starting master pid:' + process.pid);
jobs.on('job complete', function(id){
kue.Job.get(id, function(err, job){
if (err || !job) return;
job.remove(function(err){
if (err) throw err;
console.log('removed completed job #%d', job.id);
});
});
function getMoreJobs() {
console.log('looking for more jobs...');
getOutdateReports(function (err, reports) {
if (err) return setTimeout(getMoreJobs, 5 * 60 * 60 * 1000);
reports.forEach(function(report) {
jobs.create('reports', {
id: report.id,
title: report.name,
params: report.params
}).attempts(5).save();
});
setTimeout(getMoreJobs, 60 * 60 * 1000);
});
}
//Create the jobs
getMoreJobs();
console.log('Starting ', numCPUs, ' workers');
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('death', function(worker) {
console.log('worker pid:' + worker.pid + ' died!'.bold.red);
});
} else {
//Process the jobs
console.log('Starting worker pid:' + process.pid);
jobs.process('reports', 20, function(job, done){
//completing my work here
veryHardWorkGeneratingReports(function(err) {
if (err) return done(err);
return done();
});
});
}
解决方法:
看看https//github.com/LearnBoost/kue.
在json.js脚本中检查行64-112.在那里,您将找到返回包含作业的对象的方法,这些方法也使用类型,状态或id范围进行过滤. (jobRange(),jobStateRange(),jobTypeRange().)
向下滚动主页面到JSON API -section,您将找到返回对象的示例.
如何调用和使用你比我更了解的那些方法.
如果传递未知关键字,jobs.create()将失败.我会创建一个函数来检查forEach-loop中的当前作业,并返回一个关键字.然后在jobs.create() – 参数中调用此函数而不是literal关键字.
通过json.js中的这些方法获得的信息,可以帮助您创建“moreJobToDo” – 事件.
内容总结
以上是互联网集市为您收集整理的javascript – 使用kue for node.js的唯一作业全部内容,希望文章能够帮你解决javascript – 使用kue for node.js的唯一作业所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。