Sha256: 694f2dd6afcf49e1e3fdb3d5abb44f33d550c9639ccd52ac8bdc052869c5edf3
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 KB
Contents
require 'heroku-api' module Delayed module Workless module Scaler class HerokuCedar < Base extend Delayed::Workless::Scaler::HerokuClient def self.up client.post_ps_scale(ENV['APP_NAME'], 'worker', self.workers_needed) if self.workers < self.workers_needed end def self.down client.post_ps_scale(ENV['APP_NAME'], 'worker', self.min_workers) unless self.workers == self.min_workers or self.jobs.count > 0 end def self.workers client.get_ps(ENV['APP_NAME']).body.count { |p| p["process"] =~ /worker\.\d?/ } 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 [[(self.jobs.count.to_f / self.workers_ratio).ceil, self.max_workers].min, self.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 & 1 rubygems
Version | Path |
---|---|
workless-1.1.2 | lib/workless/scalers/heroku_cedar.rb |
workless-1.1.1 | lib/workless/scalers/heroku_cedar.rb |
workless-1.1.0 | lib/workless/scalers/heroku_cedar.rb |