resque中的问题:完成处理后,作业不会从队列中删除

时间:2011-04-05 13:37:54

标签: ruby-on-rails ruby queue resque

我在rails应用程序中使用了resque和resque-scheduler。我在使用resque-scheduler时遇到了奇怪的问题。我的一项工作是,一旦完成“执行”方法,就不会从队列中删除。我需要明确地将其删除以退出队列,然后队列中的其他作业开始执行。

Job类很简单,如:

                    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"

宝石版本有问题吗?还是其他什么?

2 个答案:

答案 0 :(得分:0)

你真的通过直接查看redis来验证吗?在perform开始执行之前,作业将从队列中删除。

答案 1 :(得分:0)

让我们尝试这个宝石“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 ..."

获取此宝石并获取详细信息:https://github.com/quirkey/resque-status