Sha256: df852ea26368fd631f2a0e96f17b0a375ebc13fc0683766a0390756681f1d99d

Contents?: true

Size: 592 Bytes

Versions: 1

Compression:

Stored size: 592 Bytes

Contents

# frozen_string_literal: true

require_relative 'job'
require_relative 'queue'

module Quiq
  class Worker
    def initialize(queue)
      @queue = Queue.new(queue)
    end

    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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quiq-0.2.0 lib/quiq/worker.rb