0

我已经在我的 rails 应用程序中实现了 resque 排队系统。我想知道从入队到从队列中删除的 resque 作业流程。

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

我调试 gem 找出步骤 3 中使用的方法,但我找不到它。正如我调试的那样,方法 Resque::Job.destroy、Resque::Job.dequeue 不负责此任务。谁能告诉我从队列中删除作业的方法

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

提前致谢。

4

2 回答 2

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 
于 2011-02-23T11:17:14.060 回答
0

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

于 2012-11-27T15:11:48.550 回答