我在rails应用程序中实现了resque排队系统。我想知道resque作业的流程从enqueue开始,从队列中删除。
传统的工作流程,以及从宝石中使用的方法,是
1. Resque将作业入队(Resque :: Job.create),
2.作业调用'执行'类方法(Resque :: Job.perform)和
3. Resque从队列中删除作业。
我调试了gem以找出步骤3中使用的方法,但我找不到它。方法Resque :: Job.destroy,Resque :: Job.dequeue不负责这项任务,因为我调试了。任何人都可以告诉我使用从队列中删除作业的方法
。
请注意,我不想明确删除作业,我想要从队列中删除作业的典型resque方法。
提前致谢。
答案 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),则没有删除作业的痕迹。 我认为只有在没有任何例外的情况下完成工作时才应该工作