如何为resque作业设置超时

时间:2012-03-05 01:27:19

标签: ruby-on-rails ruby resque

我需要实现一项功能,如果在一定时间内没有处理它们,就可以使resque作业超时。

因此,假设创建了一个作业但在一小时内无法处理,因为队列太长和/或没有足够的工作人员将其关闭。

在这种情况下,我不想删除这项工作......最好的办法是什么?也许有一个我正在监督的配置参数或第三方宝石?

由于

1 个答案:

答案 0 :(得分:1)

我不知道默认情况下是否有办法在Resque中执行此操作,但这并不难做到。

在你的工作中做这样的事情:

def perform(id, queued_at)
  return false unless Time.parse(queued_at) >= 1.hour.ago

  ...
end

要排队作业,请执行:Resque.enqueue(MyJobClass,object.id,DateTime.now)。第一行将自动转储作业,如果排队的时间超过一小时,则会阻止它执行。