class Quiq::Worker

Public Class Methods

new(queue) click to toggle source
# File lib/quiq/worker.rb, line 8
def initialize(queue)
  @queue = Queue.new(queue)
end

Public Instance Methods

start() click to toggle source
# File lib/quiq/worker.rb, line 12
def start
  # Set the process name
  Process.setproctitle("quiq worker #{@queue.name}")

  # Reschedule jobs that get terminated before completion
  # Beware that the jobs must be idempotent!
  @queue.purge_processing!

  # Then start processing enqueued jobs
  Async do
    loop { Job.new(@queue.pop, @queue).run }
  ensure
    Quiq.redis.close
  end
end