Skip to content

Commit 6951307

Browse files
committed
switch Worker#reserve to non blocking MultiQueue
1 parent 50519db commit 6951307

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

lib/resque/worker.rb

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -193,19 +193,15 @@ def perform(job)
193193
# Attempts to grab a job off one of the provided queues. Returns
194194
# nil if no job can be found.
195195
def reserve
196-
queues.each do |queue|
197-
log! "Checking #{queue}"
198-
if job = Resque.reserve(queue)
199-
log! "Found job on #{queue}"
200-
return job
201-
end
202-
end
203-
196+
multi_queue = MultiQueue.new(
197+
queues.map {|queue| Queue.new(queue, Resque.redis, Resque.coder) },
198+
Resque.redis)
199+
200+
queue, job = multi_queue.pop(true)
201+
log! "Found job on #{queue}"
202+
return Job.new(queue.name, job)
203+
rescue ThreadError
204204
nil
205-
rescue Exception => e
206-
log "Error reserving job: #{e.inspect}"
207-
log e.backtrace.join("\n")
208-
raise e
209205
end
210206

211207
# Returns a list of queues to use when searching for a job.

0 commit comments

Comments
 (0)