forked from twitter-archive/kestrel
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
mrflip edited this page Sep 12, 2010
·
11 revisions
Check out
- the README for most recent info.
- Very useful Blog post launching Kestrel
- Blog post announcing Kestrel
- The Starling repo — Kestrel’s interface is similar to but more powerful than Starling’s.
- Blocking Fetch
-
Reliable Fetch
-————————————————————
class Broker
require 'memcached'
QUEUE_SLEEP_TIME = 200
MEMCACHED_TIMEOUT = 0.250
def queue
@queue ||= Memcached.new(['localhost:22133'], :timeout => MEMCACHED_TIMEOUT)
end
def process_tasks &block
loop do
task = start_task or next
yield task
complete_task
end
end
# Retrieve a task. Returns nil on error or timeout
def start_task
begin
task = queue.get("#{task}/open/t=#{QUEUE_SLEEP_TIME}")
rescue RuntimeError => e; warn e ; return ; end
end
def complete_task
queue.get("#{task}/close") rescue nil
end
end