目前我在背景队列方面运气不佳。我正试图让Resque工作。我已经安装了redis和Resque gem。
Redis正在运行。一个工人正在运行(rake resque:work QUEUE = simple)。使用Web界面,我可以看到工作人员正在运行并等待工作。
当我运行'rake get_updates'时,作业排队但失败了。我已经尝试过def self.perform和def perform。
clockwork.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'
答案 0 :(得分:9)
perform
方法应该是类实例方法。
class GetUpdates
@queue = :simple
def self.perform
puts "Running GetUpdates"
end
end
答案 1 :(得分:1)
在将方法更改为self.perform后,您是否尝试重新启动resque?退出rake resque并在将方法名称更改为self.perform后再次启动。这应该是肯定的。