square-circle-triangle / airbrush

Airbrush is a distributed processing server using memcache to queue jobs and communicate results back to the client once they've been processed

This URL has Read+Write access

name age message
file .gitignore Mon Feb 11 16:44:32 -0800 2008 Update ignores to leave generated spec html and... [crafterm]
file History.txt Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
file LICENSE Tue Oct 28 06:13:47 -0700 2008 adding the license [Nicolas Marfleet]
file Manifest.txt Tue Jul 01 00:45:21 -0700 2008 Add extension to buffered logger to prepend all... [crafterm]
file README.txt Thu Jul 03 23:03:56 -0700 2008 Update README.txt to include airbrush essential... [crafterm]
file Rakefile Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
directory bin/ Thu Jul 03 23:41:10 -0700 2008 Add resultant image size to return values send ... [crafterm]
directory config/ Sun May 18 19:18:48 -0700 2008 Add gem dependency to starling git-svn-id: sv... [crafterm]
directory extras/ Tue Jul 01 16:36:48 -0700 2008 Add supplimentary script for cleaning out older... [crafterm]
directory lib/ Sun Nov 30 13:04:26 -0800 2008 flipped the clipping_required method around the... [square-circle-triangle]
directory log/ Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
directory script/ Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
file setup.rb Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
directory spec/ Mon Jul 07 21:36:03 -0700 2008 Fix remaining rmagick processor specs following... [crafterm]
directory tasks/ Mon Feb 11 16:44:31 -0800 2008 Add rspec tasks for generating html reports and... [crafterm]
directory website/ Mon Jan 21 23:06:07 -0800 2008 Initial project import git-svn-id: svn://svn.... [crafterm]
README.txt
= AIRBRUSH

== DESCRIPTION

Airbrush is a distributed processing host for performing arbitrary tasks on a particular server.
Currently it supports using MemCache as the transport queue to communicate between an airbrush
server issuing a command and the server processing it.

Due to the distributed nature of MemCache, multiple Airbrush servers can be started across
many hosts, and each will monitor the MemCache incoming queue for results independently and
atomically.

Remote jobs are performed via a 'processor' installed as part of Airbrush, and is currently
configured in code in the server.rb source file (look for the handler definition/configuration). A
future enhancemnt could support automatic processor registration and/or a plugin architecture.

Actual communication between client and server via MemCache is done via a hash, that includes
a :command value, optional :args value and a uniqie :id value. The :id value is used to uniquely
identify this job, :command names the actual command to run on the remote server, and :params
is a hash of parameters that are passed to the command being executed.

Several conventions are used, the name of the command needs to match a method name on the
processor. The key names in the params hash need to match parameter names to the method being
invoked (and will be automatically assigned). The :id value is used to name a queue that the
client can poll for return values from the remote command, if required.

== USAGE

To use Airbrush, you will need a starling server installed and running:

    $> starling -v -P /tmp/starling.pid -q /tmp/queue

and at least one Airbrush instance running, including your processor:

    $> airbrush -v

To send a remote job to the Airbrush server, use the Airbrush::Client module located
in airbrush/client.rb. An example is airbrush-example-client, which sends an image to the
remote server to be turned into a set of previews.