que-scheduler 3.2.3 → 3.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/que/scheduler/audit.rb +2 -2
- data/lib/que/scheduler/scheduler_job.rb +15 -4
- data/lib/que/scheduler/version.rb +1 -1
- data/lib/que/scheduler/version_support.rb +19 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38a2b7875c377e5464a1c7765a97fbeb7f1619d6ec9d2425278d95faa33b60ee
|
4
|
+
data.tar.gz: 2770026bd29d9e08dd7bf45fa82814e2cec5a7bbf18e656e6003854e5f839822
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a14e16dfe2cb57b90249d3b16747ce92a7a6716bdd79627648df3d8059e1dd0ee86181ee558386ff68a987a4929e90fe19148a26752ee65f58d63be141e962a
|
7
|
+
data.tar.gz: 0674f778f0e1bd9c38927426a9699cb20ff4e8a7b08a8b96807be66cb252295460779f660357b83e9a0893a8147c2e11627ff81e675b0840c602b6642df098ea
|
data/lib/que/scheduler/audit.rb
CHANGED
@@ -24,11 +24,11 @@ module Que
|
|
24
24
|
def append(scheduler_job_id, executed_at, enqueued_jobs)
|
25
25
|
::Que.execute(INSERT_AUDIT, [scheduler_job_id, executed_at])
|
26
26
|
enqueued_jobs.each do |j|
|
27
|
-
attrs = j
|
27
|
+
attrs = Que::Scheduler::VersionSupport.job_attributes(j)
|
28
28
|
inserted = ::Que.execute(
|
29
29
|
INSERT_AUDIT_ENQUEUED,
|
30
30
|
[scheduler_job_id] +
|
31
|
-
attrs.values_at(
|
31
|
+
attrs.values_at(:job_class, :queue, :priority, :args, :job_id, :run_at)
|
32
32
|
)
|
33
33
|
raise "Cannot save audit row #{scheduler_job_id} #{executed_at} #{j}" if inserted.empty?
|
34
34
|
end
|
@@ -4,6 +4,7 @@ require_relative 'schedule'
|
|
4
4
|
require_relative 'enqueueing_calculator'
|
5
5
|
require_relative 'scheduler_job_args'
|
6
6
|
require_relative 'state_checks'
|
7
|
+
require_relative 'version_support'
|
7
8
|
|
8
9
|
# The main job that runs every minute, determining what needs to be enqueued, enqueues the required
|
9
10
|
# jobs, then re-enqueues itself.
|
@@ -13,7 +14,7 @@ module Que
|
|
13
14
|
SCHEDULER_FREQUENCY = 60
|
14
15
|
|
15
16
|
# Always highest possible priority.
|
16
|
-
|
17
|
+
Que::Scheduler::VersionSupport.set_priority(self, 0)
|
17
18
|
|
18
19
|
def run(options = nil)
|
19
20
|
Que::Scheduler::Db.transaction do
|
@@ -53,7 +54,7 @@ module Que
|
|
53
54
|
|
54
55
|
def check_enqueued_job(enqueued_job, job_class, args, logs)
|
55
56
|
if enqueued_job.is_a?(Que::Job)
|
56
|
-
job_id = enqueued_job.
|
57
|
+
job_id = Que::Scheduler::VersionSupport.job_attributes(enqueued_job).fetch(:job_id)
|
57
58
|
logs << "que-scheduler enqueueing #{job_class} #{job_id} with args: #{args}"
|
58
59
|
enqueued_job
|
59
60
|
else
|
@@ -64,13 +65,23 @@ module Que
|
|
64
65
|
end
|
65
66
|
|
66
67
|
def enqueue_self_again(scheduler_job_args, last_full_execution, job_dictionary, enqueued_jobs)
|
68
|
+
# Log last run...
|
69
|
+
job_id = Que::Scheduler::VersionSupport.job_attributes(self).fetch(:job_id)
|
70
|
+
Audit.append(job_id, scheduler_job_args.as_time, enqueued_jobs)
|
71
|
+
|
72
|
+
# And rerun...
|
67
73
|
next_run_at = scheduler_job_args.as_time.beginning_of_minute + SCHEDULER_FREQUENCY
|
68
|
-
SchedulerJob.enqueue(
|
74
|
+
enqueued_job = SchedulerJob.enqueue(
|
69
75
|
last_run_time: last_full_execution.iso8601,
|
70
76
|
job_dictionary: job_dictionary,
|
71
77
|
run_at: next_run_at
|
72
78
|
)
|
73
|
-
|
79
|
+
|
80
|
+
# rubocop:disable Style/GuardClause This reads better as a conditional
|
81
|
+
unless check_enqueued_job(enqueued_job, SchedulerJob, {}, [])
|
82
|
+
raise 'SchedulerJob could not self-schedule. Has `.enqueue` been monkey patched?'
|
83
|
+
end
|
84
|
+
# rubocop:enable Style/GuardClause
|
74
85
|
end
|
75
86
|
end
|
76
87
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'que'
|
2
|
+
|
3
|
+
# The purpose of this module is to centralise the differences when supporting both que 0.x and
|
4
|
+
# 1.x with the same gem.
|
5
|
+
module Que
|
6
|
+
module Scheduler
|
7
|
+
module VersionSupport
|
8
|
+
class << self
|
9
|
+
def set_priority(context, priority)
|
10
|
+
context.instance_variable_set('@priority', priority)
|
11
|
+
end
|
12
|
+
|
13
|
+
def job_attributes(enqueued_job)
|
14
|
+
enqueued_job.attrs.transform_keys(&:to_sym)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: que-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Lascelles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -339,6 +339,7 @@ files:
|
|
339
339
|
- lib/que/scheduler/scheduler_job_args.rb
|
340
340
|
- lib/que/scheduler/state_checks.rb
|
341
341
|
- lib/que/scheduler/version.rb
|
342
|
+
- lib/que/scheduler/version_support.rb
|
342
343
|
homepage: https://github.com/hlascelles/que-scheduler
|
343
344
|
licenses:
|
344
345
|
- MIT
|
@@ -364,7 +365,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
364
365
|
version: '0'
|
365
366
|
requirements: []
|
366
367
|
rubyforge_project:
|
367
|
-
rubygems_version: 2.7.6
|
368
|
+
rubygems_version: 2.7.6.2
|
368
369
|
signing_key:
|
369
370
|
specification_version: 4
|
370
371
|
summary: A cron scheduler for Que
|