Resque ..我怎样才能获得队列列表

时间:2012-03-12 04:30:25

标签: ruby-on-rails queue scheduled-tasks resque

好的..在heroku上我有24个工人(据我所知) 我说1000个客户。每个人都有他们自己的"架构"在postgresql数据库中。

每个客户都有可以完成的任务"之后" ...向我的公司后端发送订单,就是一个很好的例子。

我在想我可以为每个客户端创建一个新队列,每个队列都有自己的工作者(进程)。这似乎不在牌中。

好吧..我现在的想法是在客户记录中有一个队列字段.. 所以客户端1到15在queue_a中 并且客户端16到106在queue_b .. ect如果一个客户端正在使用堆,我们可以将它们移动到新队列,或者将其他客户端移出缓慢的队列。可以收集低排量的客户..这将是一种平衡的行为,但如果我们跟踪指标(我们无论如何都会如此),它将不会很难管理。

(任何反击的想法都会很棒,我真的在吐痰阶段)

但是现在。我想弄清楚如何为每个队列创建一个worker。 https://gist.github.com/486161告诉我如何创建X工作者,但实际上并没有让我将工作者设置为队列。如果我知道这一点,以及如何获得队列列表,我想我正在走向可行的解决方案。

<小时/> 阅读中http://blog.winfieldpeterson.com/2012/02/17/resque-queue-priority/
我意识到我的计划充满了艰辛。第一个被添加到工人的客户/队列将优先考虑......我不想要那个,我希望他们都有相同的。只要它们是同一队列的一部分..

1 个答案:

答案 0 :(得分:13)

我只是坚持主题:)

在resque中获取所有队列非常容易

Resque.queues

是所有队列名称的列表,它不包括'failed'队列,我做了类似的事情

(['failed'] + Resque.queues).each do |queue|
  queue_size = queue=='failed' ? Resque::Failure.count : Resque.size(queue)
end