Overview

There are a few options when it comes to choosing a job server and API. Gearman has benefited from many active open source contributors who have each introduced a new project or helped out with an existing one. Some projects are more active than others, each have varying features and performance, but they are all compatible with one another (except for some new protocol additions). If you need help figuring out which option would best suit your needs, get in touch!

Job Server (gearmand)

gearmand (C)

A job server written in C/C++ under the BSD license that contains all of the latest protocol additions. Development for this is very active, with threading, persistent queues, and pluggable protocols now supported. Replication and better statistics reporting are coming soon. This installs an executable called gearmand (usually in /usr/local/sbin). The C library, libgearman, is bundled in the same package.

java-gearman-service (Java)

A java implementation that is both the gearman library and a standalone job server.

abraxas (Node.js)

A compatible Node.js implementation of gearman client library and job server, with full end-to-end streaming support.

Gearman::Server (Perl)

The original Perl job server that can be found on CPAN as Gearman::Server. This installs an executable called ‘gearmand’ (usually in /usr/local/bin).

Client & Worker APIs

libgearman (C)

The C client & worker APIs are under the BSD license and can be found in the same package as the C server. This library is closely tied with the gearmand (C) job server, sharing low-level connection and protocol code.

Shell

This is included as part of the gearmand and libgearman package above. This tool allows you to run Gearman clients and workers from the command line or in shell scripts. This is installed as an executable called gearman (usually in /usr/local/bin).

Perl

There are three Perl client implementations, two of which are Pure Perl and one which is a wrapper around the libgearman C library.

Gearman::Client & ::Worker

This pure Perl API can be found in CPAN under Gearman::Client and Gearman::Worker. It supports SSL and is quite robust and well maintained.

Gearman::XS

A Perl module that wraps the libgearman C library. On CPAN under Gearman::XS. Has not been maintained in recent years.

AnyEvent::Gearman::Client & ::Worker

This pure Perl API can be found in CPAN under AnyEvent::Gearman::Client and AnyEvent::Gearman::Worker.

A simpler API can be found under AnyEvent::Gearman.

This module uses the AnyEvent framework and provides a event-driven asynchronous client and worker.

Nodejs

Gearman Nodejs Extension (0.0.1)
GearmaNode Node.js library with support for multiple servers

PHP

There are two PHP client/worker libraries, one which is a pure PHP extension and one which wraps the libgearman C library.

Gearman Extension

A PHP extension that wraps the libgearman C library.

Net_Gearman

A pure PHP API that can be found as Net_Gearman on PEAR.

GearmanBundle

Python

There are three different Python APIs, one that is a wrapper of the libgearman C library and two that are pure Python. There is also a package for Django.

Pure Python

Two pure-Python API’s can be found on PyPI, “gearman” and “gear”. They can be installed with “pip install gearman”.

Python C Library Wrapper

A python library that wraps the C interface library.

Django

Twisted

Java

Java Gearman Service

“Java gearman service” is a asynchronous interface written entirely in java. This includes client, worker, and server implementations. java-gearman-service can be downloaded at Google Code

Gearman Java

A pure Java driver exists on Launchpad.

C# / .NET

GearmanSharp

GearmanSharp is a C# / .NET API for Gearman, developed for .NET 3.5. Not a complete implementation of the protocol yet. Contributions are welcome!

GearmanSharp on GitHub

gearman.net

A C# / .NET library developed using Mono 2.x. Compiles and runs using the Microsoft C# compiler suite as well, but all active development is done using Mono.

Available on Launchpad as gearman.net. Only source is available at the moment, no releases just yet.

Ruby

Gearman-Ruby

Official ruby library for the Gearman distributed job system.

Rust

Rustygear

Experimental Rust implementation of the Gearman protocol, both client and server

Go

Gearman-Go

Go library for the Gearman distributed job system.

G2

Go gearman server, client, and worker libraries.

Lisp

Common Lisp

Databases

Gearman calls can be made from within several databases through UDFs providing the power of job distribution from within SQL.

MySQL

A set of MySQL UDFs built on the libgearman C library. This exposes the client API functions to SQL queries, triggers, and stored procedures.

PostgreSQL

A set of PostgreSQL UDFs built on the libgearman C library. This exposes the client API functions to SQL queries, triggers, and stored procedures.

Drizzle

The Gearman UDFs for Drizzle are included in the main Drizzle tree and tarballs. See ./configure options for enabling them.

Tools

Gearman-Monitor (PHP)

Server monitoring tool developed in PHP, to watch server statistics.

GearmanManager (PHP)

In addition, there is a framework that can use either of the two extensions above for managing a group of PHP based Gearman workers.

Multi-process Gearman Task Server Library (Python)

GMTasks contains a simple multiprocessing server for Gearman workers, designed for ease of configuration and maximum availability.