Sha256: 7c6a97a148379a07f3371ba162a00c39ca7cac35390fd49f5beda5dbb8491d11

Contents?: true

Size: 1006 Bytes

Versions: 31

Compression:

Stored size: 1006 Bytes

Contents

class EndlessInterruptiveWorker
  include Shoryuken::Worker

  # Usage:
  # QUEUE="super-q"
  # MAX_EXECUTION_TIME=2000 QUEUE=$QUEUE \
  # bundle exec ./bin/shoryuken -r ./examples/endless_uninterruptive_worker.rb -q $QUEUE -c 8

  class << self
    def queue
      ENV['QUEUE'] || 'default'
    end

    def max_execution_time
      ENV["MAX_EXECUTION_TIME"] ? ENV["MAX_EXECUTION_TIME"].to_i : 100
    end

    def rng
      @rng ||= Random.new
    end

    # returns a random number between 0 and 100
    def random_number(hi = 1000)
      (rng.rand * hi).to_i
    end
  end

  def perform(sqs_msg, body)
    Shoryuken.logger.info("Received message: '#{body}'")

    execution_ms = self.class.random_number(self.class.max_execution_time)
    Shoryuken.logger.info("Going to sleep for #{execution_ms}ms")

    new_body = "#{execution_ms}-" + body.to_s
    sleep(execution_ms.to_f / 1000)

    self.class.perform_async(new_body.slice(0, 512))
  end

  shoryuken_options queue: queue, auto_delete: true
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
shoryuken-3.2.3 test_workers/endless_interruptive_worker.rb
shoryuken-3.2.2 test_workers/endless_interruptive_worker.rb
shoryuken-3.2.1 test_workers/endless_interruptive_worker.rb
shoryuken-3.2.0 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.12 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.11 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.10 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.9 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.8 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.7 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.6 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.5 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.4 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.3 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.2 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.1 test_workers/endless_interruptive_worker.rb
shoryuken-3.1.0 test_workers/endless_interruptive_worker.rb
shoryuken-3.0.11 test_workers/endless_interruptive_worker.rb
shoryuken-3.0.10 test_workers/endless_interruptive_worker.rb
shoryuken-3.0.9 test_workers/endless_interruptive_worker.rb