我有一段代码运行一些方法,我将该方法放在 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_schedule.yml 中的 resque-scheduler 中排队
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:work QUEUE='*' 脚本
我在 Rails 控制台中尝试了 Resque.info,它显示如下,
{:working=>0, :queues=>1, :failed=>1, :environment=>"development", :servers=>["redis://localhost:6379/0"], :pending=>0, :processed=>1, :workers=>1}
任何想法如何克服这个问题?