【问题标题】:Resque.. how can I get a list of the queuesResque ..我怎样才能得到队列列表
【发布时间】:2012-03-28 12:56:39
【问题描述】:

好的.. 在 heroku 我有 24 名工人(据我所知) 我说有1000个客户。每个在 postgresql 数据库中都有自己的“模式”。

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

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

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

(听到任何反击的想法都会很棒,我真的处于吐球阶段)

不过,现在。我想弄清楚如何为每个队列创建一个工作人员。 https://gist.github.com/486161 告诉我如何创建 X 工人,但并没有真正让我将工人设置为队列。如果我知道这一点,以及如何获取队列列表,我想我将走向可行的极限解决方案。


继续阅读
http://blog.winfieldpeterson.com/2012/02/17/resque-queue-priority/
我意识到我的计划充满了艰辛。第一个添加到工作人员的客户/队列将获得优先权。我不希望这样,我希望他们都拥有相同的。只要他们是同一个队列的一部分..

【问题讨论】:

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


    【解决方案1】:

    我只是坚持主题:)

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

    Resque.queues
    

    是所有队列名称的列表,它不包括“失败”队列,我做了类似的事情

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

    【讨论】:

    • 谢谢大佬。。我不确定这是不是最好的方法,但它会让我为每个问题安排一个工人。我可能会扩展我的想法,让每个工人有多个队列,但这只是为了优先考虑。
    • 你知道队列是否是 alpha 排序的吗?
    • The call to Redis.queues 在 Redis 上使用 SMEMBERS 操作。因为 Redis 是为速度而设计的键值缓存/存储,SMEMBERS 不会尝试对集合成员进行排序。所以@baash05 的问题的答案是 - 不。
    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2023-01-11
    • 2019-09-25
    相关资源
    最近更新 更多