6

目前,我对后台队列的运气并不好。我正试图让 Resque 工作。我已经安装了 redis 和 Resque gem。

Redis 正在运行。工作人员正在运行(rake resque:work QUEUE=simple)。使用 Web 界面,我可以看到工作人员正在运行并等待工作。

当我运行“rake get_updates”时,作业已排队但失败。我用 def self.perform 和 def perform 都试过了。

发条.rake

task :get_updates => :environment do
    Resque.enqueue(GetUpdates)
end

类文件 (app/workers/get_updates.rb)

class GetUpdates
    @queue = :simple

    def perform

        puts "Running GetUpdates"

    end

end

错误信息

undefined method `perform' for GetUpdates:Class
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:79:in `perform_job'
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:46:in `execute_job'
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:25:in `perform' 
4

2 回答 2

11

perform方法应该是类实例方法。

class GetUpdates
  @queue = :simple

  def self.perform
    puts "Running GetUpdates"
  end

end
于 2013-09-05T09:27:24.503 回答
1

将方法更改为 self.perform 后,您是否尝试重新启动 resque。将方法名称更改为 self.perform 后,退出 rake resque 并重新开始。这应该肯定有效。

于 2013-09-05T09:34:07.190 回答