class ScoutApm::BackgroundWorker
Constants
- DEFAULT_PERIOD
in seconds, time between when the worker thread wakes up and runs.
Attributes
context[R]
period[R]
Public Class Methods
new(context, period=DEFAULT_PERIOD)
click to toggle source
# File lib/scout_apm/background_worker.rb, line 11 def initialize(context, period=DEFAULT_PERIOD) @context = context @period = period @keep_running = true end
Public Instance Methods
logger()
click to toggle source
# File lib/scout_apm/background_worker.rb, line 17 def logger context.logger end
run_once()
click to toggle source
Runs the task passed to start
once.
# File lib/scout_apm/background_worker.rb, line 31 def run_once @task.call if @task end
running?()
click to toggle source
# File lib/scout_apm/background_worker.rb, line 21 def running? @keep_running end
start(&block)
click to toggle source
Starts running the passed block every 60 seconds (starting now).
# File lib/scout_apm/background_worker.rb, line 36 def start(&block) @task = block logger.debug "Background Worker: starting to run every #{period} seconds" # The first run should be 1 period of time from now next_time = Time.now + period loop do begin now = Time.now # Sleep the correct amount of time to reach next_time while now < next_time && @keep_running sleep_time = next_time - now sleep(sleep_time) if sleep_time > 0 now = Time.now end # Bail out if @keep_running is false unless @keep_running logger.debug "Background Worker: breaking from loop" break end @task.call # Adjust the next time to run forward by @periods until it is in the future while next_time <= now next_time += period end rescue logger.debug "Background Worker Exception!" logger.debug $!.message logger.debug $!.backtrace end end end
stop()
click to toggle source
# File lib/scout_apm/background_worker.rb, line 25 def stop logger.debug "Background Worker: stop requested" @keep_running = false end