@@ -128,7 +128,7 @@ def work(interval = 5.0, &block)
128
128
loop do
129
129
break if shutdown?
130
130
131
- if not paused? and job = reserve
131
+ if not paused? and job = reserve ( interval )
132
132
log "got: #{ job . inspect } "
133
133
job . worker = self
134
134
run_hook :before_fork , job
@@ -148,9 +148,8 @@ def work(interval = 5.0, &block)
148
148
@child = nil
149
149
else
150
150
break if interval . zero?
151
- log! "Sleeping for #{ interval } seconds"
151
+ log! "Timed out after #{ interval } seconds"
152
152
procline paused? ? "Paused" : "Waiting for #{ @queues . join ( ',' ) } "
153
- sleep interval
154
153
end
155
154
end
156
155
@@ -192,12 +191,18 @@ def perform(job)
192
191
193
192
# Attempts to grab a job off one of the provided queues. Returns
194
193
# nil if no job can be found.
195
- def reserve
194
+ def reserve ( interval = 5.0 )
195
+ interval = interval . to_i
196
196
multi_queue = MultiQueue . new (
197
197
queues . map { |queue | Queue . new ( queue , Resque . redis , Resque . coder ) } ,
198
198
Resque . redis )
199
199
200
- queue , job = multi_queue . pop ( true )
200
+ if interval < 1
201
+ queue , job = multi_queue . pop ( true )
202
+ else
203
+ queue , job = multi_queue . poll ( interval . to_i )
204
+ end
205
+
201
206
log! "Found job on #{ queue } "
202
207
return Job . new ( queue . name , job )
203
208
rescue ThreadError
0 commit comments