class ScoutApm::BackgroundWorker
Constants
- DEFAULT_PERIOD
-
in seconds, time between when the worker thread wakes up and runs.
Attributes
Public Class Methods
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
Source
# File lib/scout_apm/background_worker.rb, line 31 def run_once @task.call if @task end
Runs the task passed to start
once.
Source
# File lib/scout_apm/background_worker.rb, line 21 def running? @keep_running end
Source
# 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
Starts running the passed block every 60 seconds (starting now).
Source
# File lib/scout_apm/background_worker.rb, line 25 def stop logger.debug "Background Worker: stop requested" @keep_running = false end