Sha256: 31b79ad5c05e18dcd557b67941e9525e1135b1ae9d8c8b2814d939ab43cff6b4
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'sidekiq' require 'sidekiq/cron' require 'sidekiq/scheduled' require 'sidekiq/options' module Sidekiq module Cron POLL_INTERVAL = Sidekiq::Options[:average_scheduled_poll_interval] || 30 # The Poller checks Redis every N seconds for sheduled cron jobs. class Poller < Sidekiq::Scheduled::Poller def initialize Sidekiq.configure_server do Sidekiq::Options[:poll_interval_average] = POLL_INTERVAL end if Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('6.5.0') # Sidekiq Poller init requires a config argument. super(Sidekiq) else super end end def enqueue time = Time.now.utc Sidekiq::Cron::Job.all.each do |job| enqueue_job(job, time) end rescue => ex # Most likely a problem with redis networking. # Punt and try again at the next interval. Sidekiq.logger.error ex.message Sidekiq.logger.error ex.backtrace.first handle_exception(ex) if respond_to?(:handle_exception) end private def enqueue_job(job, time = Time.now.utc) job.test_and_enque_for_time! time if job && job.valid? rescue => ex # Problem somewhere in one job. Sidekiq.logger.error "CRON JOB: #{ex.message}" Sidekiq.logger.error "CRON JOB: #{ex.backtrace.first}" handle_exception(ex) if respond_to?(:handle_exception) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-cron-1.7.0 | lib/sidekiq/cron/poller.rb |