在更新任何对象时,如何清除在rails中使用beanstalkd的backburner中的作业

时间:2015-01-07 12:08:42

标签: ruby-on-rails beanstalkd

在我的项目中创建一个广告系列(模型)时,我已经在rails中使用beanstalkd为Backburner排队了作业。如下所述:

Backburner::Worker.enqueue(DeviceJob, [ad, campaign.id, "Ad"], :delay => add_job.to_i.minutes)

工作正常,但是当我更新广告系列时,之前的工作将保留当前的工作。但是,我想删除当前广告系列以前的所有工作。

在delayed_job中,我们可以使用活动记录表。 在resque中,我们可以使用redis服务器。

但是在后面,我们怎么可能。

感谢。

1 个答案:

答案 0 :(得分:1)

我可以直接使用 beaneater API ,也可以使用 beanstalkd_view gem 等提供基于网络的管理用户界面的工具。

beanstalk = Beaneater::Pool.new(['localhost:11300'])
tube = beanstalk.tubes["some-tube"]
while tube.peek(:ready)
  job = tube.reserve
  job.delete
end
beanstalk.close