Kue完成的工作不会被完全删除

时间:2018-06-20 09:07:50

标签: redis kue

在确保作业成功完成并被删除的同时,我的redis仍然看到一些剩余物。 处理完一项工作后,我在redis上做了这个:

1) "q:job:1:log"
2) "q:job:1"
3) "q:ids"
4) "q:stats:work-time"
6) "q:job:types"

我认为,不应将q:job:1:log和1:job:1留在那儿..对于以后的每个工作流程,我都会得到更多的q:job:X:log和q:job :X,而X是作业的索引号。

问题是.. redis应该被这些键填满还是有问题?在生产一段时间后,这变得肿了!

起初我以为我可能没有以足够好的方式删除作业,所以我将removeOnComplete(true)更改为false并在该作业的onComplete调用上添加了一个手动job.remove(),但它甚至显示了剩余的工作量更多(经过冲洗和一个新的工作流程之后):

1) "q:job:1:log"
2) "q:job:1"
3) "q:jobs:complete"
4) "q:ids"
5) "q:jobs:runNewJob:complete"
6) "q:stats:work-time"
8) "q:job:types"

这表明现在完成的工作完全留在了那里,好像我根本没有尝试删除它们一样-不仅仅是其中的一些剩余物。。

这是我使用的两个版本的代码:

主要尝试:

queue.create('runNewJob', {id, anotherId})
      .ttl(SOME_TTL)
      .priority('high')
      .removeOnComplete(true)
      .on('complete', (result) => {
        // some code and logs..
      })
      .on('failed', (err) => {
        // Some logs and code..
      })
      .save();

第二次尝试:

let job = queue.create('runNewJob', {id, anotherId});
    job.ttl(SOME_TTL)
      .priority('high')
      .removeOnComplete(false)
      .on('complete', (result) => {
        job.remove((err) => {
          if (err) console.log(err)
          else console.log("REMOVED") // This does get printed
        });
        // some code and logs..
      })
      .on('failed', (err) => {
        // Some logs and code..
      })
      .save();

无论如何,第一个代码看起来都像作业被删除了,但是留下了那些q:jobs:X [:log]键,它们也具有值:

hgetall q:job:1
1) "progress"
2) "0"
3) "updated_at"
4) "1529484320301"

127.0.0.1:6379> lrange q:job:1:log 0 -1
1) "Upload succesfull"
2) "Cleaning tmp output dir  ./tmp/5b2a141f6861c31ae1e92910"

似乎显示了我在处理此作业时所做的日志。

谢谢! :)

0 个答案:

没有答案