diff --git a/lib/resque/scheduler.rb b/lib/resque/scheduler.rb index 7abf40cd..4a39fff4 100644 --- a/lib/resque/scheduler.rb +++ b/lib/resque/scheduler.rb @@ -51,9 +51,13 @@ def load_schedule! Resque.schedule.each do |name, config| log! "Scheduling #{name} " if !config['cron'].nil? && config['cron'].length > 0 - rufus_scheduler.cron config['cron'] do - log! "queuing #{config['class']} (#{name})" - enqueue_from_config(config) + rufus_scheduler.cron config['cron'] do |c| + if Resque.cron_not_done?(name, c.last) + log! "queuing #{config['class']} (#{name})" + enqueue_from_config(config) + else + log! "cron already done in other shcduler for #{config['class']} (#{name}) - skipping" + end end else log! "no cron found for #{config['class']} (#{name}) - skipping" @@ -135,4 +139,4 @@ def log(msg) end -end \ No newline at end of file +end diff --git a/lib/resque_scheduler.rb b/lib/resque_scheduler.rb index b329c457..4e262544 100644 --- a/lib/resque_scheduler.rb +++ b/lib/resque_scheduler.rb @@ -109,9 +109,12 @@ def next_item_for_timestamp(timestamp) item end + def cron_not_done?(name, timestamp) + redis.getset("cron_#{name}", timestamp.to_i).to_s != timestamp.to_i.to_s + end end Resque.extend ResqueScheduler Resque::Server.class_eval do include ResqueScheduler::Server -end \ No newline at end of file +end