resque如何从队列中删除作业?

时间:2011-02-23 10:48:57

标签: ruby-on-rails ruby queue resque

我在rails应用程序中实现了resque排队系统。我想知道resque作业的流程从enqueue开始,从队列中删除。

传统的工作流程,以及从宝石中使用的方法,是 1. Resque将作业入队(Resque :: Job.create),
2.作业调用'执行'类方法(Resque :: Job.perform)和
3. Resque从队列中删除作业。

我调试了gem以找出步骤3中使用的方法,但我找不到它。方法Resque :: Job.destroy,Resque :: Job.dequeue不负责这项任务,因为我调试了。任何人都可以告诉我使用从队列中删除作业的方法

请注意,我不想明确删除作业,我想要从队列中删除作业的典型resque方法。

提前致谢。

2 个答案:

答案 0 :(得分:4)

Resque实际上使用'dequeue'方法删除作业:

  def dequeue(klass, *args)
    Job.destroy(queue_from_class(klass), klass, *args)
  end

要从队列中挑选作业进行处理,请使用“pop”方法:

  def pop(queue)
    decode redis.lpop("queue:#{queue}")
  end 

答案 1 :(得分:0)

因此,如果工作人员失败(或我们按ctrl + c),则没有删除作业的痕迹。 我认为只有在没有任何例外的情况下完成工作时才应该工作