草庐IT

node.js - 如何在多个 docker 容器从 redis kue nodejs 消耗时一次处理单个作业

我有多个docker容器,它们使用来自同一个rediskue队列的作业。问题是他们从事相同的工作。我的需要是在一个容器上工作,然后在它完成一些其他容器工作之后。作业的顺序很重要。如果我不能在rediskue中完成,但可以与其他队列管理器(如kafka)一起完成,那也很好 最佳答案 我所做的是使用switchcase保持状态机:varindex;functionwhatever(){if(typeofstate==='undefined'){state=0;}switch(state){case0://Dowhateverstuffn

node.js - 在多个 kubernetes pod/实例中处理 Redis KUE 作业

我将Sails.js用于我从GoogleCloudkubernetes集群中的Dockerfile部署的API,并使用3-5个pod扩展工作负载。API提供端点来上传单个图像文件和更大的zip文件,我直接在当前APIpod/实例上提取这些文件。单个图像文件和提取的存档内容(100-1000个文件,总共15-85mb的内容),我必须上传到各种存储桶。这就是rediskue发挥作用的地方。为了确保API不会长时间阻止上传请求,我创建了延迟kue作业以将所有上传的文件和文件夹移动到存储桶或链式作业,并首先在ImageMagick的帮助下创建缩略图。所有这些都可能需要一些时间,具体取决于集群当

node.js - 带有 kue 的 NodeJS 应用程序从不从 0 开始

我有一个使用kue执行长时间运行操作的nodeJSapi。虽然,一旦我关闭应用程序并重新启动它,所有以前的作业仍然存在。移除它们不会将Redis计数器重置为0。仅从任何状态移除它们:事件、非事件、失败、完成或延迟。这是我的kue声明:varkue=require('kue'),queue=kue.createQueue()每次调用某个api端点时,我都会执行以下操作://enqueueanewjobprocessfordataanalysisvardaJob=queue.create('job1',{title:'jobtobecompleted'}).removeOnComplete

javascript - Node 重启时丢失所有 Kue/Redis 作业

我正在查看在Node中实现作业队列的一些选项,并偶然发现了使用Redis的Kue。是否因为作业存储在Redis中,所以如果我重新启动Node或服务器,所有作业都会丢失? 最佳答案 Redis是内存中持久存储。它在conf文件中配置的一定时间后将数据存储在键值对中。因此,即使服务器或Node出现故障或重新启动,您提交的数据也将持久存在。 关于javascript-Node重启时丢失所有Kue/Redis作业,我们在StackOverflow上找到一个类似的问题:

javascript - Kue worker 与 createClientFactory : only subscriber commands may be used

我正在努力设置我的kueworker并发现了一些奇怪的东西。如果我使用默认的kueredis连接创建我的队列,一切正常:varkue=require('kue'),redis=require('redis');varq=kue.createQueue();q.process('cypher',function(job,done){});worker完美启动。但是,如果我尝试用我自己的一个覆盖默认的redis连接,我会得到一个错误:订阅者模式下的连接,只能使用订阅者命令当执行遇到下面的q.process函数时:varkue=require('kue'),redis=require('re

javascript - 使用 Node.js 和 Kue,有没有办法指定我希望任务执行的日期?

显然,我可以将延迟设置为到我想要的日期为止的毫秒数,但在某些情况下这并不能很好地工作,最大int值将成为一个问题。如果Kue做不到,我可以将特定日期的作业存储在面向客户端的应用程序使用的主数据库中,或者存储在第三家商店中,我只是想避免使用多个商店这个过程。更新:这是一个愚蠢的问题,我很快在脑子里做了一些数学运算,结果失败得很厉害,我想,然后问,我应该在问之前准确地计算一下。 最佳答案 遗憾的是,Kue没有任何其他方式来安排工作。我确实想知道您有哪些工作需要安排得如此之远以至于溢出整数。考虑到Kue由Redis支持,我可能不想依赖它来

node.js - “工作完成”事件未在 Kue 中触发

我不知道我做错了什么,也许有人可以指出来。我想弄清楚为什么我的“作业完成”事件没有触发。varkue=require('kue'),jobs=kue.createQueue();varutil=require('util');varjob=jobs.create('test',util.puts('123')).on('complete',function(){console.log("Jobcomplete");}).on('failed',function(){console.log("Jobfailed");}).on('progress',function(progress){

node.js - nodejs Kue 的条件尝试

我正在使用kue在一个网络爬虫应用程序中。如果错误符合特定条件,我想为某些失败的作业设置attempts。例如,如果错误是由套接字挂起引起的,则作业将以1分钟的间隔重试3次。我的代码如下所示,但不起作用varkue=require('kue');varqueue=kue.createQueue();queue.process('grab',function(job,done){//doCrawlingJobisasynccallandreturnspromisedoCrawlingJob(job).then(function(result){done();}.catch(functio

node.js - 使用 kue 连接到 redis 总是创建到 localhost 的连接

我无法使用kue连接到Redis,我已经按照这个article,实际上我正在使用kueredis客户端创建连接,连接代码是这样的:varkue=require('kue'),redis=require('kue/node_modules/redis');app.redisClient=redis.createClient('6379','remoteip',{});app.redisClient.on('error',function(err){console.log('Rediserrorencountered',err);});app.redisClient.on('end',fu

javascript - 是否可以在 Kue Node.js 中更新已创建的作业?

我正在使用Kue创建工作.jobs.create('myQueue',{'title':'test','job_id':id,'params':params}).delay(milliseconds).removeOnComplete(true).save(function(err){if(err){console.log('jobs.create.err',err);}});每个作业都有延迟时间,一般是3小时。现在我将检查每个想要创建新作业并获取id的传入请求。从上面的代码可以看出,当我创建一个作业时,我会将作业ID添加到作业中。所以现在我想用队列中现有作业的job_id检查传入id