Sha256: ea064437f7b9312f0faa14d9db1fb58cdb69c8c3edc33681071aa61d660476b8
Contents?: true
Size: 1.6 KB
Versions: 3
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true require 'platform-api' module Delayed module Workless module Scaler class Heroku < Base extend Delayed::Workless::Scaler::HerokuClient def self.up return unless workers_needed > min_workers && workers < workers_needed updates = { "quantity": workers_needed } client.formation.update(ENV['APP_NAME'], 'worker', updates) end def self.down return if workers == workers_needed updates = { "quantity": workers_needed } client.formation.update(ENV['APP_NAME'], 'worker', updates) end def self.workers client.formation.info(ENV['APP_NAME'], 'worker')['quantity'].to_i end # Returns the number of workers needed based on the current number of pending jobs and the settings defined by: # # ENV['WORKLESS_WORKERS_RATIO'] # ENV['WORKLESS_MAX_WORKERS'] # ENV['WORKLESS_MIN_WORKERS'] # def self.workers_needed [[(jobs.count.to_f / workers_ratio).ceil, max_workers].min, min_workers].max end def self.workers_ratio if ENV['WORKLESS_WORKERS_RATIO'].present? && (ENV['WORKLESS_WORKERS_RATIO'].to_i != 0) ENV['WORKLESS_WORKERS_RATIO'].to_i else 100 end end def self.max_workers ENV['WORKLESS_MAX_WORKERS'].present? ? ENV['WORKLESS_MAX_WORKERS'].to_i : 1 end def self.min_workers ENV['WORKLESS_MIN_WORKERS'].present? ? ENV['WORKLESS_MIN_WORKERS'].to_i : 0 end end end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
workless_revived-2.2.0 | lib/workless/scalers/heroku.rb |
workless-2.2.0 | lib/workless/scalers/heroku.rb |
workless_revived-2.1.0.2 | lib/workless/scalers/heroku.rb |