Method: Worker::Queue#dequeue

Defined in:
lib/worker/queue.rb

#dequeueObject

locks a set of jobs for this worker



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/worker/queue.rb', line 63

def dequeue
  query = db[:worker_jobs]
              .where(
                  '`run_at` < ? AND `locked_by` IS NULL AND `id` in (SELECT `id` FROM `worker_jobs` ORDER BY `priority` DESC LIMIT ?)',
                  Time.now, jobs_per_worker)

  if queue_name
    query = query.where(queue: queue_name)
  end

  query.update(locked_by: id, locked_at: Time.now)
  db[:worker_jobs].where(locked_by: id)
end