You are looking at historical revision 39572 of this page. It may differ significantly from its current revision.
Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
hen --- a beanstalk client
Description
beanstalk is a protocol for interfacing with beanstalkd, a "simple, fast work queue."
hen is a simple client for workers and producers
Author
Joseph Gay
Requirements
Documentation
Examples
Worker:
(with-hen (tcp-connect "localhost" 11300)
(while #t
(hen-ignore "default")
(hen-watch "my-tube")
(let ([job (hen-reserve)]) ; blocks, optional timeout parameter
(my-process-job job)
(hen-delete ((compose cdr assoc) 'id job)))))
Producer:
(with-hen (tcp-connect "localhost" 11300)
(hen-use "my-tube")
(hen-put "hello worker!"))
Procedures
[procedure] (with-hen TCP-CONNECTION &FORMS)This wrapper procedure is for added convenience. TCP-CONNECTION should be a multi-value as is returned from tcp-connect in tcp6. with-hen is used as in the examples above. It will automatically call hen-quit and return the value of the last form provided to be evaluated.
The following are supported beanstalk commands:
[procedure] (hen-put [PRI 2^31 [DELAY 0 [TTR 36000]]] data)[procedure] (hen-reserve [TIMEOUT #f])
[procedure] (hen-use TUBE)
[procedure] (hen-delete ID)
[procedure] (hen-release ID [PRI 2^31 [DELAY 0]])
[procedure] (hen-bury ID [PRI 2^31])
[procedure] (hen-touch ID)
[procedure] (hen-watch TUBE)
[procedure] (hen-ignore TUBE)
[procedure] (hen-peek ID)
[procedure] (hen-peek-ready)
[procedure] (hen-peek-delayed)
[procedure] (hen-peek-buried)
[procedure] (hen-kick bound)
[procedure] (hen-stats-job ID)
[procedure] (hen-stats-tube TUBE)
[procedure] (hen-stats)
[procedure] (hen-list-tubes)
[procedure] (hen-list-tube-used)
[procedure] (hen-list-tubes-watched)
[procedure] (hen-quit)
[procedure] (hen-pause-tube TUBE DELAY)
Most of the commands will return a simple string status. Exceptions are the stats commands, which return an alist, and the reserve command, which returns a pair (job-id . data) if a job is reserved.
All hen commands also accept keyword arguments #:tcp-in and #:tcp-out to override hen-in and hen-out, which are the default ports, initially unspecified.
Notes
- The structure of return values is subject to change.
Source
Source code is available in the eggs repository as well as on github: https://github.com/joseph-gay/cscm-hen
Version
- 0.7
- Bug fixes for default priority on 32 bit systems and for unconsumed response data (Thanks to Tom Danielson)
- 0.6
- Bug fix for hen-list-tubes-watched, fixed egg dependencies
- 0.5
- Initial release
License
Copyright (C) 2011 by Joseph Gay This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA