Skip to content

Instantly share code, notes, and snippets.

@TwP
Created November 21, 2009 23:03
Show Gist options
  • Save TwP/240328 to your computer and use it in GitHub Desktop.
Save TwP/240328 to your computer and use it in GitHub Desktop.
STDOUT.sync = true
require 'rubygems'
require 'servolux'
require 'logger'
require 'beanstalk-client'
module JobProcessor
def before_executing
STDOUT.puts "(#{Process.ppid}:#{Process.pid}) is starting!"
@beanstalk = Beanstalk::Pool.new(['localhost:11300'])
end
def after_executing
@beanstalk.close
STDOUT.puts "(#{Process.ppid}:#{Process.pid}) is stopping!"
end
def execute
STDOUT.puts "(#{Process.ppid}:#{Process.pid}) reserving a job"
job = @beanstalk.reserve(120)
STDOUT.puts "(#{Process.ppid}:#{Process.pid}) got job: #{job.inspect}"
job.delete if job
end
end
module MyServer
def before_starting
STDOUT.puts "Hello, I'm #{Process.pid}"
@pool = Servolux::Prefork.new(:module => JobProcessor)
@pool.start 3
end
def run
STDOUT.puts "running"
@pool.each_worker { |worker|
STDOUT.puts worker.error.inspect if worker.error
}
end
def after_stopping
STDOUT.puts "after stopping reached"
@pool.stop
end
end
server = Servolux::Server.new('MyServer', :logger => Logger.new(STDOUT), :interval => 30)
server.extend MyServer
server.startup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment