Class: Autoscaler::Sidekiq::SleepWaitServer

Inherits:
Object
  • Object
show all
Defined in:
lib/autoscaler/sidekiq/sleep_wait_server.rb

Overview

Sidekiq server middleware Performs scale-down when the queue is empty

Instance Method Summary collapse

Constructor Details

#initialize(scaler, timeout, specified_queues = nil) ⇒ SleepWaitServer

Returns a new instance of SleepWaitServer.

Parameters:

  • scaler (scaler)

    object that actually performs scaling operations (e.g. HerokuPlatformScaler)

  • timeout (Numeric)

    number of seconds to wait before shutdown

  • specified_queues (Array[String]) (defaults to: nil)

    list of queues to monitor to determine if there is work left. Defaults to all sidekiq queues.



12
13
14
15
16
# File 'lib/autoscaler/sidekiq/sleep_wait_server.rb', line 12

def initialize(scaler, timeout, specified_queues = nil)
  @scaler  = scaler
  @timeout = timeout
  @system  = QueueSystem.new(specified_queues)
end

Instance Method Details

#call(worker, msg, queue, redis = ::Sidekiq.method(:redis)) ⇒ Object

Sidekiq middleware api entry point



19
20
21
22
23
24
25
# File 'lib/autoscaler/sidekiq/sleep_wait_server.rb', line 19

def call(worker, msg, queue, redis = ::Sidekiq.method(:redis))
  working!(queue, redis)
  yield
ensure
  working!(queue, redis)
  wait_for_task_or_scale(redis)
end