resque任务的优先级
当以下面形式启动worker时,worker每次读取redis总是会优先获取file_serve队列任务,当file_serve找不到,才会去找warm_cache队列
QUEUES=file_serve,warm_cache rake resque:work
源码如下。
循环去reserve出一个job,而reserve是按QUEUES的顺序来读job的
# lib/resque/worker.rb
def work(interval = 5.0, &block)
interval = Float(interval)
$0 = "resque: Starting"
startup
loop do
break if shutdown?
if not paused? and job = reserve
# ...
perform(job, &block)
# ...
else
# ...
sleep interval
end
end
end
def reserve
queues.each do |queue|
log! "Checking #{queue}"
if job = Resque.reserve(queue)
log! "Found job on #{queue}"
return job
end
end
# ...
end