Sha256: e2a182dff40d107d89eb48e5e762cc8a9982ec8edc63744fb38002eb94ee1734

Contents?: true

Size: 757 Bytes

Versions: 8

Compression:

Stored size: 757 Bytes

Contents

module WorkerKiller
  class CountLimiter

    attr_reader :min, :max, :left, :limit, :started_at

    def initialize(min: 3072, max: 4096, verbose: false)
      @min = min
      @max = max
      @limit = @min + WorkerKiller.randomize(@max - @min + 1)
      @left = @limit
      @verbose = verbose
    end

    def check
      return nil if @limit <= 1

      @started_at ||= Time.now

      if @verbose
        logger.info "#{self}: worker (pid: #{Process.pid}) has #{@left} left before being limited"
      end

      return false if (@left -= 1) > 0

      logger.warn "#{self}: worker (pid: #{Process.pid}) exceeds max number of requests (limit: #{@limit})"

      true
    end

    def logger
      WorkerKiller.configuration.logger
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
worker_killer-1.0.2.187805 lib/worker_killer/count_limiter.rb
worker_killer-1.0.2.187732 lib/worker_killer/count_limiter.rb
worker_killer-1.0.1.83603 lib/worker_killer/count_limiter.rb
worker_killer-1.0.1.75538 lib/worker_killer/count_limiter.rb
worker_killer-1.0.1.39842 lib/worker_killer/count_limiter.rb
worker_killer-1.0.0.39841 lib/worker_killer/count_limiter.rb
worker_killer-1.0.0.39839 lib/worker_killer/count_limiter.rb
worker_killer-0.1.1.39838 lib/worker_killer/count_limiter.rb