是否有一种简单的方法来处理BJ并发

时间:2011-02-10 04:40:41

标签: ruby-on-rails ruby background resque

有没有办法在BJ中设置工作并确保某个“类型”中的2个没有同时运行?

我们正在运行24个独角兽,它将允许BJ为每个人启动。这不是什么大不了的事情我们喜欢多个工作处理人员敲掉后台任务。例外是数据导入。我们希望能够告诉它不要一次运行多个。

这可能是BJ还是我们应该转移到像resque这样的东西?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将数据导入作业限制到某个优先级,然后确保只有一个延迟作业正在获取该优先级的作业。例如,如果您希望让所有其他作业从优先级0运行到99,并使数据导入作业以优先级100运行,则可以让所有延迟作业工作者从min_priority 0运行到max_priority为99然后你可以让一个延迟的工作人员从min_priority 100运行到max_priority 100,确保只有一个工作人员正在运行这些工作。这将确保没有两个导入数据作业(优先级100)同时运行。