God , Resque, Resque-schedule, is working,but buggy. Need to combine with LDAP and also implement XML calendar sync.
This commit is contained in:
parent
69f2f6a716
commit
f949523bbb
1
Gemfile
1
Gemfile
|
@ -21,6 +21,7 @@ gem 'radius'
|
||||||
gem 'rake'
|
gem 'rake'
|
||||||
gem 'resque' # background jobs
|
gem 'resque' # background jobs
|
||||||
gem 'resque-scheduler' # job scheduling
|
gem 'resque-scheduler' # job scheduling
|
||||||
|
gem 'resque-restriction'
|
||||||
gem 'ruby-debug19'
|
gem 'ruby-debug19'
|
||||||
gem 'rubyzip'
|
gem 'rubyzip'
|
||||||
gem 'sinatra'
|
gem 'sinatra'
|
||||||
|
|
|
@ -161,6 +161,8 @@ GEM
|
||||||
redis-namespace (~> 1.0.2)
|
redis-namespace (~> 1.0.2)
|
||||||
sinatra (>= 0.9.2)
|
sinatra (>= 0.9.2)
|
||||||
vegas (~> 0.1.2)
|
vegas (~> 0.1.2)
|
||||||
|
resque-restriction (0.3.0)
|
||||||
|
resque (>= 1.7.0)
|
||||||
resque-scheduler (1.9.9)
|
resque-scheduler (1.9.9)
|
||||||
redis (>= 2.0.1)
|
redis (>= 2.0.1)
|
||||||
resque (>= 1.8.0)
|
resque (>= 1.8.0)
|
||||||
|
@ -276,6 +278,7 @@ DEPENDENCIES
|
||||||
rails (>= 3.1.0, < 3.2.0)
|
rails (>= 3.1.0, < 3.2.0)
|
||||||
rake
|
rake
|
||||||
resque
|
resque
|
||||||
|
resque-restriction
|
||||||
resque-scheduler
|
resque-scheduler
|
||||||
rspec (~> 2.0)
|
rspec (~> 2.0)
|
||||||
rspec-rails (~> 2.0)
|
rspec-rails (~> 2.0)
|
||||||
|
|
2
Rakefile
2
Rakefile
|
@ -1,7 +1,9 @@
|
||||||
|
# /usr/bin/ruby -Ku
|
||||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||||
|
|
||||||
require File.expand_path('../config/application', __FILE__)
|
require File.expand_path('../config/application', __FILE__)
|
||||||
|
require 'resque/tasks'
|
||||||
require 'rake/dsl_definition'
|
require 'rake/dsl_definition'
|
||||||
require 'rake'
|
require 'rake'
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
# require 'open-uri'
|
# require 'open-uri'
|
||||||
# require 'nokogiri'
|
# require 'nokogiri'
|
||||||
module FetchTime
|
class FetchTime < Resque::Plugins::RestrictionJob
|
||||||
@queue = :my_job_queue
|
restrict :per_300 => 10
|
||||||
|
|
||||||
|
@queue = :low
|
||||||
|
|
||||||
def self.perform()
|
def self.perform()
|
||||||
# sleep 10
|
# sleep 10
|
||||||
# doc = Nokogiri::HTML(open('http://www.timeanddate.com/worldclock/city.html?n=241'))
|
doc = Nokogiri::HTML(open('http://www.timeanddate.com/worldclock/city.html?n=241'))
|
||||||
# CronMail.time_check(doc.at('#ct').children.first.text).deliver
|
CronMail.time_check(doc.at('#ct').children.first.text).deliver
|
||||||
# puts "Mail Sent"
|
puts "Mail Sent"
|
||||||
# true
|
true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
class NccuCalendar
|
||||||
|
@queue = :high
|
||||||
|
|
||||||
|
def self.perform()
|
||||||
|
# sleep 10
|
||||||
|
puts "NccuCalendar Sync"
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
class SyncDb
|
||||||
|
|
||||||
|
@queue = :high
|
||||||
|
|
||||||
|
def self.perform()
|
||||||
|
# sleep 10
|
||||||
|
puts "DB Sync"
|
||||||
|
end
|
||||||
|
end
|
|
@ -62,6 +62,8 @@ module Orbit
|
||||||
|
|
||||||
# Enable the asset pipeline
|
# Enable the asset pipeline
|
||||||
config.assets.enabled = true
|
config.assets.enabled = true
|
||||||
|
#config.time_zone = 'Taipei'
|
||||||
|
ENV['TZ'] = 'Asia/Taipei'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Orbit_Apps = []
|
Orbit_Apps = []
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'resque_scheduler'
|
||||||
# require 'yaml'
|
# require 'yaml'
|
||||||
|
|
||||||
Resque.redis = 'localhost:6379'
|
Resque.redis = 'localhost:6379'
|
||||||
Resque.redis.namespace = "resque:SchedulerExample"
|
#Resque.redis.namespace = "resque:SchedulerExample"
|
||||||
|
|
||||||
# If you want to be able to dynamically change the schedule,
|
# If you want to be able to dynamically change the schedule,
|
||||||
# uncomment this line. A dynamic schedule can be updated via the
|
# uncomment this line. A dynamic schedule can be updated via the
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
rails_env = 'development' #ENV['RAILS_ENV'] || "production"
|
||||||
|
rails_root = ENV['RAILS_ROOT'] || "/Users/kaito/Documents/MyWorkspeace/orbit/orbit"
|
||||||
|
num_workers = rails_env == 'production' ? 5 : 2
|
||||||
|
|
||||||
|
num_workers.times do |num|
|
||||||
|
God.watch do |w|
|
||||||
|
w.dir = "#{rails_root}"
|
||||||
|
w.name = "resque-#{num}"
|
||||||
|
w.group = 'resque'
|
||||||
|
w.interval = 30.seconds
|
||||||
|
p "/usr/bin/rake -f #{rails_root}/Rakefile resque:work QUEUE=* RAILS_ENV=#{rails_env}"
|
||||||
|
# w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
|
||||||
|
w.start = "rake -f #{rails_root}/Rakefile resque:work QUEUE=* RAILS_ENV=#{rails_env}"
|
||||||
|
|
||||||
|
w.uid = 'kaito'
|
||||||
|
w.gid = 'staff'
|
||||||
|
|
||||||
|
# restart if memory gets too high
|
||||||
|
w.transition(:up, :restart) do |on|
|
||||||
|
on.condition(:memory_usage) do |c|
|
||||||
|
c.above = 350.megabytes
|
||||||
|
c.times = 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# determine the state on startup
|
||||||
|
w.transition(:init, { true => :up, false => :start }) do |on|
|
||||||
|
on.condition(:process_running) do |c|
|
||||||
|
c.running = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# determine when process has finished starting
|
||||||
|
w.transition([:start, :restart], :up) do |on|
|
||||||
|
on.condition(:process_running) do |c|
|
||||||
|
c.running = true
|
||||||
|
c.interval = 5.seconds
|
||||||
|
end
|
||||||
|
|
||||||
|
# failsafe
|
||||||
|
on.condition(:tries) do |c|
|
||||||
|
c.times = 5
|
||||||
|
c.transition = :start
|
||||||
|
c.interval = 5.seconds
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# start if process is not running
|
||||||
|
w.transition(:up, :start) do |on|
|
||||||
|
on.condition(:process_running) do |c|
|
||||||
|
c.running = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,17 @@
|
||||||
do_my_job:
|
do_mail_matt:
|
||||||
every: 30s
|
every: 10s
|
||||||
class: FetchTime
|
class: FetchTime
|
||||||
args:
|
args:
|
||||||
description: Runs the perform method in MyJob
|
description: Runs the perform method in FetchTime
|
||||||
|
|
||||||
|
nccu_daily_ldap_sync:
|
||||||
|
cron: 30 * * * * *
|
||||||
|
class: SyncDb
|
||||||
|
args:
|
||||||
|
description: Runs the perform method in SnycDB
|
||||||
|
|
||||||
|
nccu_claender_sync:
|
||||||
|
every: 1m
|
||||||
|
class: NccuCalendar
|
||||||
|
args:
|
||||||
|
description: Runs the perform method in NccuCalendar
|
Reference in New Issue