Class: Que::Scheduler::SchedulerJob
- Inherits:
-
Job
- Object
- Job
- Que::Scheduler::SchedulerJob
- Defined in:
- lib/que/scheduler/scheduler_job.rb
Constant Summary collapse
- SCHEDULER_FREQUENCY =
60
- RETRY_PROC =
proc { |count| # Maximum one hour, otherwise use the default backoff count > 7 ? (60 * 60) : ((count**4) + 3) }
Instance Method Summary collapse
Instance Method Details
#enqueue_required_jobs(calculator_result, logs) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/que/scheduler/scheduler_job.rb', line 45 def enqueue_required_jobs(calculator_result, logs) calculator_result.missed_jobs.filter_map do |to_enqueue| to_enqueue.enqueue.tap do |enqueued_job| check_enqueued_job(to_enqueue, enqueued_job, logs) end end end |
#run(options = nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/que/scheduler/scheduler_job.rb', line 27 def run( = nil) Que::Scheduler::Db.transaction do Que::Scheduler::StateChecks.check scheduler_job_args = SchedulerJobArgs.build() logs = ["que-scheduler last ran at #{scheduler_job_args.last_run_time}."] result = EnqueueingCalculator.parse(Scheduler.schedule.values, scheduler_job_args) enqueued_jobs = enqueue_required_jobs(result, logs) # Remove this job and schedule self again destroy enqueue_self_again( scheduler_job_args, scheduler_job_args.as_time, result.job_dictionary, enqueued_jobs ) # Only now we're sure nothing errored, log the results logs.each { |str| ::Que.log(event: :"que-scheduler", message: str) } end end |