summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/custodian/queue.rb22
1 files changed, 7 insertions, 15 deletions
diff --git a/lib/custodian/queue.rb b/lib/custodian/queue.rb
index 9a7d90f..c48bba3 100644
--- a/lib/custodian/queue.rb
+++ b/lib/custodian/queue.rb
@@ -87,27 +87,19 @@ end
#
# Fetch a job from the queue.
#
- # The timeout is used to specify the period we wait for a new job.
+ # The timeout is used to specify the period we wait for a new job, and
+ # we pause that same period between fetches.
#
- def fetch(timeout)
+ def fetch(timeout = 1)
job = nil
- timeout ||= 0
- #
- # Don't melt the CPU.
- #
- sleep_interval = 0.5
+ while( 1 )
- loop do
- job = @redis.lpop( "queue" )
- break if job or timeout < 0
+ foo, job = @redis.blpop( "queue", :timeout => timeout )
+ return job if ( job )
- sleep( sleep_interval )
-
- timeout -= sleep_interval
+ sleep( timeout )
end
-
- return( job )
end
#