Sha256: 2a5c050659089ae3570bbac6d607d69faa81b6ba36884c7a66746e5b6d309a50
Contents?: true
Size: 1007 Bytes
Versions: 27
Compression:
Stored size: 1007 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
27 entries across 27 versions & 1 rubygems