class OpenCensus::Trace::Samplers::MaxQPS
The RateLimiting
sampler delays a minimum amount of time between each sample, enforcing a maximum QPS across traces that use this sampler.
Constants
- DEFAULT_RATE
Default rate in samples per second.
Public Class Methods
new(qps = DEFAULT_RATE, rng: nil, time_class: nil)
click to toggle source
Create a sampler for the given QPS.
@param [Number] qps Samples per second. Default is {DEFAULT_RATE}. @param [#rand] rng The random number generator to use. Default is a
new `::Random` instance.
@param [#now] time_class The time class to use. Default is `::Time`.
Generally used for testing.
# File lib/opencensus/trace/samplers/rate_limiting.rb, line 40 def initialize qps = DEFAULT_RATE, rng: nil, time_class: nil @qps = qps @time_class = time_class || Time @rng = rng || Random.new @last_time = @time_class.now.to_f @lock = Monitor.new end
Public Instance Methods
call(opts = {})
click to toggle source
Implements the sampler contract. Checks to see whether a sample should be taken at this time.
@param [Hash] opts The options to sample with. @option opts [SpanContext] :span_context If provided, the span context
will be checked and the parent's sampling decision will be propagated if the parent was sampled.
@return [boolean] Whether to sample at this time.
# File lib/opencensus/trace/samplers/rate_limiting.rb, line 58 def call opts = {} span_context = opts[:span_context] return true if span_context && span_context.sampled? @lock.synchronize do time = @time_class.now.to_f elapsed = time - @last_time @last_time = time @rng.rand <= elapsed * @qps end end