<commit_before>            ____                                 _   _           _
           / ___| ___  __ _ _ __ _ __ ___   __ _| \ | | ___   __| | ___
          | |  _ / _ \/ _` | '__| '_ ` _ \ / _` |  \| |/ _ \ / _` |/ _ \
          | |_| |  __/ (_| | |  | | | | | | (_| | |\  | (_) | (_| |  __/
           \____|\___|\__,_|_|  |_| |_| |_|\__,_|_| \_|\___/ \__,_|\___|


Node.js library for the [Gearman](http://gearman.org/) distributed job system with support for multiple servers.


[![npm version](https://badge.fury.io/js/gearmanode.svg)](http://badge.fury.io/js/gearmanode)
[![Build Status](https://secure.travis-ci.org/veny/GearmaNode.png)](http://travis-ci.org/veny/GearmaNode)

#### Breaking API change
* in v0.2.0
 * payload given back to client as `job.response` in `complete` event: is instance of `Buffer` now unless you provide `toStringEncoding` option in `submitJob`
 * WORK_DATA
 * WORK_WARNING
 * WORK_EXCEPTION

## Features
* fully implemented Gearman Protocol
 * @TODO (GRAB_JOB_UNIQ, JOB_ASSIGN_UNIQ)
* support for multiple job servers
 * load balancing strategy (`sequence` or `round-robin`)
 * recover time (when a server node is down due to maintenance or a crash, load balancer will use the recover-time as a delay before retrying the downed job server)
* support for binary data and miscellaneous string encoding
* careful API documentation
* rock solid tests
 * currently more than 100 test scenarios and 350 asserts
* in depth tested with gearman clients and workers written in other languages (Ruby, PHP, Java)<commit_msg>working on #2<commit_after>            ____                                 _   _           _
           / ___| ___  __ _ _ __ _ __ ___   __ _| \ | | ___   __| | ___
          | |  _ / _ \/ _` | '__| '_ ` _ \ / _` |  \| |/ _ \ / _` |/ _ \
          | |_| |  __/ (_| | |  | | | | | | (_| | |\  | (_) | (_| |  __/
           \____|\___|\__,_|_|  |_| |_| |_|\__,_|_| \_|\___/ \__,_|\___|


Node.js library for the [Gearman](http://gearman.org/) distributed job system with support for multiple servers.


[![npm version](https://badge.fury.io/js/gearmanode.svg)](http://badge.fury.io/js/gearmanode)
[![Build Status](https://secure.travis-ci.org/veny/GearmaNode.png)](http://travis-ci.org/veny/GearmaNode)

#### Breaking API change
* in v0.2.0
 * payload given back to client as `job.response` in `complete`, `workData`, `warning`, `exception` events: is instance of `Buffer` now unless you provide `toStringEncoding` option in `submitJob`

## Features
* fully implemented Gearman Protocol
 * @TODO (GRAB_JOB_UNIQ, JOB_ASSIGN_UNIQ)
* support for multiple job servers
 * load balancing strategy (`sequence` or `round-robin`)
 * recover time (when a server node is down due to maintenance or a crash, load balancer will use the recover-time as a delay before retrying the downed job server)
* support for binary data and miscellaneous string encoding
* careful API documentation
* rock solid tests
 * currently more than 100 test scenarios and 350 asserts
* in depth tested with gearman clients and workers written in other languages (Ruby, PHP, Java)
{'fraction_non_alphanumeric': 0.13451612903225807, 'fraction_numerical': 0.006129032258064516, 'mean_word_length': 2.7771010962241167, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6008613', 'n_tokens_mistral': 1030, 'n_tokens_neox': 970, 'n_words': 269}