This is a pure-Ruby library for the gearman distributed job system.
More testing, some code cleanup.
Right now, this library has both client and worker support for Ruby apps.
A very simple client that submits a "sleep" job and waits for 100 seconds for results:
require 'rubygems'
require 'gearman'
servers = ['localhost:4730', 'localhost:4731']
client = Gearman::Client.new(servers)
taskset = Gearman::TaskSet.new(client)
task = Gearman::Task.new('sleep', 20)
task.on_complete {|d| puts d }
taskset.add_task(task)
taskset.wait(100)
A worker that will process jobs in the 'sleep' queue:
require 'rubygems'
require 'logger'
require 'gearman'
servers = ['localhost:4730']
w = Gearman::Worker.new(servers)
logger = Logger.new(STDOUT)
# Add a handler for a "sleep" function that takes a single argument, the
# number of seconds to sleep before reporting success.
w.add_ability("sleep") do |data,job|
seconds = 10
logger.info "Sleeping for #{seconds} seconds"
(1..seconds.to_i).each do |i|
sleep 1
# Report our progress to the job server every second.
job.report_status(i, seconds)
end
# Report success.
true
end
loop { w.work }
- John Ewart [email protected] (current maintainer, author of re-write)
- Kim Altintop
- Josh Black (raskchanky)
- Colin Curtin (perplexes)
- Brian Cobb (bcobb)
- Pablo A. Delgado (pablete)
- Daniel Erat
- Antonio Garrote
- Stefan Kaes (skaes)
- Ladislav Martincik
- Mauro Pompilio (malditogeek)
- Lee Reilly (leereilly)
- Clint Shryock (catsby)
- Andy Triggs (andyt)
Released under the MIT license, originally developed by XING AG. See the LICENSE file for further details.