Created
November 27, 2009 17:03
-
-
Save TwP/244122 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
require 'servolux' | |
require 'logger' | |
require 'beanstalk-client' | |
module JobProcessor | |
def before_executing | |
STDOUT.puts "[C] #$$ before_executing" | |
@beanstalk = Beanstalk::Pool.new(['localhost:11300']) | |
end | |
def after_executing | |
STDOUT.puts "[C] #$$ after_executing" | |
@beanstalk.close rescue nil | |
end | |
def execute | |
STDOUT.puts "[C] #$$ ===============>>> reserving a job <<<===============" | |
@job = nil | |
@job = @beanstalk.reserve(120) | |
STDOUT.puts "[C] #$$ got job: #{@job.body.inspect}" | |
@job.delete if @job | |
rescue Beanstalk::TimedOut | |
end | |
def term | |
STDOUT.puts "[C] #$$ got a TERM" | |
@beanstalk.close rescue nil if @job.nil | |
end | |
def hup | |
STDOUT.puts "[C] #$$ got a HUP" | |
@beanstalk.close rescue nil if @job.nil | |
end | |
end | |
module MyServer | |
def before_starting | |
STDOUT.puts "[P] #$$ server is starting" | |
@pool = Servolux::Prefork.new(:module => JobProcessor) | |
@pool.start 9 | |
end | |
def run | |
STDOUT.puts "[P] #$$ running" | |
@pool.reap | |
@pool.each_worker { |worker| | |
STDOUT.puts worker.error.inspect if worker.error | |
} | |
end | |
def after_stopping | |
STDOUT.puts "[P] #$$ server is stopping" | |
@pool.stop | |
end | |
end | |
server = Servolux::Server.new('MyServer', :logger => Logger.new(STDOUT), :interval => 30) | |
server.extend MyServer | |
server.startup | |
STDOUT.puts "[P] #$$ waiting for the kiddos" | |
Process.waitall |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment