require 'resque/tasks' require 'resque_scheduler/tasks' namespace :resque do task :setup do require 'resque' require 'resque_scheduler' require 'resque/scheduler' # you probably already have this somewhere Resque.redis = "#{Settings[:redis][:host]}:#{Settings[:redis][:port]}" # If you want to be able to dynamically change the schedule, # uncomment this line. A dynamic schedule can be updated via the # Resque::Scheduler.set_schedule (and remove_schedule) methods. # When dynamic is set to true, the scheduler process looks for # schedule changes and applies them on the fly. # Note: This feature is only available in >=2.0.0. Resque::Scheduler.dynamic = true end desc "Stop resque workers" task :stop_workers => :environment do pids = Array.new Resque.workers.each do |worker| pids << worker.to_s.split(/:/).second end if pids.size > 0 puts "Killing Resque pids #{pids.join(' ')}" system("kill -QUIT #{pids.join(' ')}") end end desc "Reload scheduled jobs" task :reload_scheduled_jobs => :environment do Myreplicator::Export.schedule_in_resque Resque.set_schedule("myreplicator_transporter", { :cron => "*/4 * * * *", :class => "Myreplicator::Transporter", :queue => "myreplicator_transporter" }) Resque.set_schedule("myreplicator_loader", { :cron => "*/5 * * * *", :class => "Myreplicator::Loader", :queue => "myreplicator_loader" }) Resque.set_schedule("myreplicator_sweeper", { :cron => "*/30 * * * *", :class => "Myreplicator::Sweeper", :queue => "myreplicator_sweeper" }) end desc "Start scheduler" task :start_scheduler => :environment do File.open("tmp/pids/resque_scheduler.pid", 'a') { |f| f << Process.pid.to_s + "\n" } Resque::Scheduler.dynamic = true Resque::Scheduler.run end desc "Stop scheduler" task :stop_scheduler => :environment do #Resque::Scheduler.shutdown pids = [] File.open("tmp/pids/resque_scheduler.pid", 'r') { |f| pids << f.readline} puts "Killing Resque scheduler #{pids.join(' ')}" system("kill -15 #{pids.join(' ')}") File.delete("tmp/pids/resque_scheduler.pid") if File.exists? "tmp/pids/resque_scheduler.pid" end end