首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式获取Resque队列中的作业数

以编程方式获取Resque队列中的作业数
EN

Stack Overflow用户
提问于 2012-06-28 05:52:21
回答 3查看 27K关注 0票数 61

我感兴趣的是设置一个监控服务,每当Resque队列中有太多作业时,它就会寻呼我(我大约有6个队列,每个队列都有不同的编号)。我还想设置一个非常类似的监视服务,当我的队列中失败的作业超过一定数量时,它会向我发出警报。

我的问题是,在我的redis服务器上,我看到了很多与Resque有关联的键和混乱。我不一定看到一种直接的方法来获得每个队列的作业计数或失败作业的数量。目前有没有一种简单的方法可以从redis中获取这些数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-28 06:56:20

是的,这非常简单,因为您使用的是Resque gem

代码语言:javascript
复制
require 'resque'

Resque.info 

将返回一个哈希值

例如/ =>

代码语言:javascript
复制
{
      :pending => 54338,
      :processed => 12772,
      :queues => 2,
      :workers => 0,
      :working => 0,
      :failed => 8761,
      :servers => [
      [0] "redis://192.168.1.10:6379/0"
    ],
    :environment => "development"
}

因此,要获取失败的作业计数,只需使用:

代码语言:javascript
复制
Resque.info[:failed]

在我的示例中,这将给出=> 8761 #

要获取队列,请使用以下命令:

代码语言:javascript
复制
Resque.queues

这将返回一个数组

例如/ =>

代码语言:javascript
复制
[
    [0] "superQ",
    [1] "anotherQ"
]

然后,您可以找到每个队列的作业数:

代码语言:javascript
复制
Resque.size(queue_name)

例如/ Resque.size("superQ")Resque.size(Resque.queues[0]) .....

票数 146
EN

Stack Overflow用户

发布于 2014-06-05 11:52:14

下面是一个bash脚本,它将监视排队的作业总数和失败作业的数量。

代码语言:javascript
复制
while :
do 
  let sum=0
  let errors=$(redis-cli llen resque:failed)
  for s in $(redis-cli keys resque:queue:*)
  do 
    let sum=$sum+$(redis-cli llen $s)
  done
  echo $sum jobs queued, with $errors errors
  sleep 1 # sleep 1 second, probably want to increase this
done

这是针对Resque 1.X,2.0可能有不同的键名。

票数 8
EN

Stack Overflow用户

发布于 2020-06-30 23:29:42

还有一个方法Resque.queue_sizes,它返回队列名称和大小的散列

Resque.queue_sizes => {"default"=>0,"slow"=>0}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11235318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档