Skip to content

Instantly share code, notes, and snippets.

@TwP
Created November 27, 2009 17:03
Show Gist options
  • Save TwP/244122 to your computer and use it in GitHub Desktop.
Save TwP/244122 to your computer and use it in GitHub Desktop.
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