当类似的工作已经运行时,Ruby Resque重新排队?

时间:2012-07-23 13:27:57

标签: ruby-on-rails ruby asynchronous queue resque

所以我注意到resque-lock是关于阻止作业排队的。但是,如果我希望我的队列完全填满,但是我想在特定情况被锁定时重新排队。要清除它:因为我的队列由一堆主机组成(例如google.com,yahoo.com,yahoo.com和apple.com),我不希望两个相同的主机进入不同的工作人员同时!我怎么做?我得到了resque-lock工作,但我认为这对这个问题没有帮助。

示例:

队列:

google.com
yahoo.com
apple.com
apple.com
stackoverflow.com

工:

  • 2名工作人员正在寻找工作并找到:google.com和yahoo.com(好的)
  • 2名工人正在寻找新的工作并找到:apple.com和apple.com
  • 不行,将第二个apple.com作业重新排入队列并继续

有关如何使用resque获取此行为的任何想法?我的例子描述了2名工人的情况,但主要的想法是,无论工人数量多少,同一主机的两个工作都不能同时运行。不允许运行的作业应该重新放入队列中。

1 个答案:

答案 0 :(得分:1)

我为此创建了自己的resque插件,名为resque::workers::lock