我有一段运行某些方法的代码,我将该方法放在self.perform中,如下所示
class StartWorker
@queue = :worker
def self.perform
puts "hello"
Parser.find_all_by_class_name("Parser").first.sites.each do |s|
site = Site.find(s.id)
parser = Parser.new(site)
parser.run
end
end
end
如果我评论def self.perform并结束此操作并运行该文件它正确显示所需的结果但是当我尝试通过取消注释相同时将其作为后台任务时它会无声地失败进入resque面板显示没有。在命令提示符中也没有输出
我从resque-scheduler中排队,在我的resque_schedule.yml
中start_worker:
cron: "55 6 * * *"
class: StartWorker
queue: worker
args:
description: "This job starts all the worker jobs"
我尝试在def self.perform方法中放入一些简单的puts语句,以检查控件是否在方法内传递,但似乎控件甚至没有传递给self.perform方法
我也尝试加载rails环境并在其中需要resque但没有用 我已经运行了bundle exec rake resque:在进行任何更改之前,为上述所有操作QUEUE ='*'脚本
我在rails控制台中尝试了Resque.info,它显示如下,
{:working=>0, :queues=>1, :failed=>1, :environment=>"development", :servers=>["redis://localhost:6379/0"], :pending=>0, :processed=>1, :workers=>1}
任何想法如何克服这个?
答案 0 :(得分:4)
bundle exec rake resque:work QUEUE='*'
应为bundle exec rake resque:work QUEUE=*
,只是因为你真的引用了通配符。