如何使用Sidekiq仅运行一个worker作业的单个实例

时间:2014-05-30 02:07:13

标签: ruby-on-rails ruby-on-rails-3.2 sidekiq

我有一个应用程序可以提供许多复杂的JSON部分。其中一些可能会打到数据库1000次。我将结果预先缓存在我们的数据库中,这样当我们更改基础数据时,我们重新生成JSON frag,然后将其存储在DB中。我正在使用Sidekiq来管理它。一个问题是,如果我将此缓存查杀代码放入Rails模型回调中,我可能会立即获得工作人员请求的多个副本。这显然不是我想要的。 Sidekiq有没有办法说只有当它不在队列中时才将它添加到队列中?

以下是我正在做的事情的一个例子:

class ArcBackground
  include Sidekiq::Worker
  def perform(id)
    Menu.regenerateMenuJSON(id)
    Menu.regenerateMenuJSONFull(id)
  end
end

0 个答案:

没有答案