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)
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.
A java implementation that is both the gearman library and a standalone job server.
- Find java-gearman-service at Google Code
A compatible Node.js implementation of gearman client library and job server, with full end-to-end streaming support.
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
The C client & worker API under BSD license that 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.
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).
There are three Perl client implementations, two of which are Pure Perl and one which is a wrapper around the libgearman C library.
A Perl module that wraps the libgearman C library. On CPAN under Gearman::XS.
Gearman::Client & ::Worker
This pure Perl API can be found in CPAN under Gearman::Client and Gearman::Worker.
AnyEvent::Gearman::Client & ::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.
There are two PHP client/worker libraries, one which is a pure PHP extension and one which wraps the libgearman C library.
A PHP extension that wraps the libgearman C library.
A pure PHP API that can be found as Net_Gearman on PEAR.
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.
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.
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
A pure Java driver exists on Launchpad.
C# / .NET
GearmanSharp is a C# / .NET API for Gearman, developed for .NET 3.5. Not a complete implementation of the protocol yet. Contributions are welcome!
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.
Official ruby library for the Gearman distributed job system.
Go library for the Gearman distributed job system.
Go gearman server, client, and worker libraries.
Gearman calls can be made from within several databases through UDFs providing the power of job distribution from within SQL.
A set of MySQL UDFs built on the libgearman C library. This exposes the client API functions to SQL queries, triggers, and stored procedures.
A set of PostgreSQL UDFs built on the libgearman C library. This exposes the client API functions to SQL queries, triggers, and stored procedures.
The Gearman UDFs for Drizzle are included in the main Drizzle tree and tarballs. See ./configure options for enabling them.
Server monitoring tool developed in PHP, to watch server statistics.
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.