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 | ||||||
		Loading…
	
		Reference in New Issue