我有一段运行某些方法的代码,我已将该方法放入 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 方法中放入一些简单的 put 语句来检查控件是否在方法内部传递,但似乎控件甚至没有在 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}
有什么想法可以克服这个问题吗?
bundle exec rake resque:work QUEUE='*'
应该是bundle exec rake resque:work QUEUE=*
,以防万一您确实引用了通配符。为我工作:
Resque::Scheduler.configure do |c|
c.verbose = Rails.env.development? # or just true
end
红宝石:
3.0.3
,
回复:2.2.0
,
Resque-调度程序4.5.0
,
轨道:6.1.4.4