Sha256: a364feb277676884be23b4d8bc02e73d1ba12f37ee5e05cee3a4f182c95f5f67

Contents?: true

Size: 1.06 KB

Versions: 21

Compression:

Stored size: 1.06 KB

Contents

class EndlessUninterruptiveWorker
  include Shoryuken::Worker

  # Usage:
  # QUEUE="super-q"
  # MAX_EXECUTION_TIME=2000 QUEUE=$QUEUE \
  # bundle exec ./bin/shoryuken -r ./examples/endless_interruptive_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 burn metal for #{execution_ms}ms")
    end_time = Time.now + execution_ms.to_f / 1000
    while Time.now < end_time do
      # burn metal
    end

    new_body = "#{execution_ms}-" + body.to_s

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

  shoryuken_options queue: queue, auto_delete: true
end

Version data entries

21 entries across 21 versions & 1 rubygems

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