[英]Programmatically get the number of jobs in a Resque queue
我有兴趣设置一个监控服务,只要 Resque 队列中有太多作业,它就会向我传呼(我有大约 6 个队列,每个队列都有不同的编号)。 我还想设置一个非常相似的监控服务,当我的队列中的失败作业超过一定数量时,它会提醒我。
我的问题是,在我的 redis 服务器上,我看到有很多与 Resque 相关的密钥和混乱。 我不一定看到获得每个队列的作业数或失败作业数的直接方法。 目前是否有一种简单的方法可以从 redis 中获取这些数据?
是的,这很容易,因为您使用的是Resque gem :
require 'resque'
Resque.info
将返回一个哈希
例如/ =>
{
:pending => 54338,
:processed => 12772,
:queues => 2,
:workers => 0,
:working => 0,
:failed => 8761,
:servers => [
[0] "redis://192.168.1.10:6379/0"
],
:environment => "development"
}
因此,要获得失败的作业计数,只需使用:
Resque.info[:failed]
这会给 => 8761 #in 我的例子
要获取队列,请使用:
Resque.queues
这将返回一个数组
例如/ =>
[
[0] "superQ",
[1] "anotherQ"
]
然后您可以找到每个队列的作业数:
Resque.size(queue_name)
例如/ Resque.size("superQ")
或Resque.size(Resque.queues[0])
.....
这是一个 bash 脚本,它将监视排队的作业总数和失败的作业数。
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 可能有不同的键名。
还有一个方法Resque.queue_sizes
返回队列名称和大小的散列
Resque.queue_sizes => {"default"=>0, "slow"=>0}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.