resque中的问题:完成处理后,作业没有从队列中删除
我在rails应用程序中使用resque和resque-scheduler。 我在使用resque-scheduler时遇到了奇怪的问题。 一旦完成“执行”方法,我的一个工作就是不会从队列中删除。 我需要明确地将其删除以退出队列,然后队列中的其他作业开始执行。
工作类很简单,如:
class FooJob @queue = :high_volume def self.perform puts "FooJob#perform:" # some method call end end
resque_schedule.yml包含:
add_jobs_from_foo: cron: "15 * * * *" class: FooJob description: "enqueue jobs from Foo"
它可能是gem版本的问题吗? 还是其他什么?
你真的通过直接查看redis来validation吗? 在perform
甚至开始执行之前,作业将从队列中删除。
让我们试试这个gem“resque-status”
获得工作状态 –
status = Resque::Plugins::Status::Hash.get(job_id)
Resque :: Plugins :: Status :: Hash.get(job_id)对象将返回:
status.pct_complete #=> 0 status.status #=> 'queued' status.queued? #=> true status.working? #=> false status.time #=> Time object status.message #=> "Created at ..."
得到这个gem和详细信息: https : //github.com/quirkey/resque-status