beanstalkd is a fast, distributed, in-memory workqueue service. See http://xph.us/software/beanstalkd/
An example from http://xph.us/software/beanstalkd/: First, have one process put a job into the queue: producer := Beanstalk clone connect("127.0.0.1:11300") producer put("hello")Then start another process to take jobs out of the queue and run them: worker := Beanstalk clone connect("127.0.0.1:11300") loop( job := worker reserve job body println # prints "hello" job delete )See Beanstalk.io code and protocol description (http://github.com/kr/beanstalkd/tree/master/doc/protocol.txt) for details. Both are short and easy to read. Stat commands depend on YAML. | ||
bury(id, pri)
Puts a job into the "buried" state
connect(address)
Connects to a beanstalk server. address is a "host:port" string, e.g., "127.0.0.1:11300"
delete(id)
Removes a job with a given id from the server, entirely
put(body, pri, delay, ttr)
Inserts a job into the queue.
release(id)
pri - priority, an integer < 2**32. Jobs with smaller priority values will be scheduled before jobs with larger priorities. The most urgent priority is 0; the least urgent priority is 4294967295. delay - an integer number of seconds to wait before putting the job in the ready queue. The job will be in the "delayed" state during this time. ttr - time to run, an integer number of seconds to allow a worker to run this job.
Puts a reserved job back into the ready queue
reserve(timeout)
Returns and reserves a job (waits until one becomes available if necessary)
touch(id)
Allows a worker to request more time to work on a job.
|