@@ -15,9 +15,9 @@ class Scheduler < Processes::Base
1515
1616 def initialize ( recurring_tasks :, **options )
1717 options = options . dup . with_defaults ( SolidQueue ::Configuration ::SCHEDULER_DEFAULTS )
18- @dynamic_tasks = options [ :dynamic_tasks_enabled ]
18+ @dynamic_tasks_enabled = options [ :dynamic_tasks_enabled ]
1919 @polling_interval = options [ :polling_interval ]
20- @recurring_schedule = RecurringSchedule . new ( recurring_tasks , dynamic_tasks_enabled : @dynamic_tasks )
20+ @recurring_schedule = RecurringSchedule . new ( recurring_tasks , dynamic_tasks_enabled : @dynamic_tasks_enabled )
2121
2222 super ( **options )
2323 end
@@ -27,35 +27,20 @@ def metadata
2727 end
2828
2929 private
30- attr_reader :dynamic_tasks
3130
32- def run
33- if dynamic_tasks
34- poll_for_dynamic_tasks
35- else
36- loop do
37- break if shutting_down?
38- interruptible_sleep ( polling_interval )
39- end
40- end
41- ensure
42- SolidQueue . instrument ( :shutdown_process , process : self ) do
43- run_callbacks ( :shutdown ) { shutdown }
44- end
45- end
31+ STATIC_SLEEP_INTERVAL = 60
4632
47- def poll_for_dynamic_tasks
33+ def run
4834 loop do
4935 break if shutting_down?
5036
51- recurring_schedule . reload!
52-
53- if recurring_schedule . changed?
54- refresh_registered_process
55- recurring_schedule . clear_changes
56- end
37+ reload_schedule if dynamic_tasks_enabled?
5738
58- interruptible_sleep ( polling_interval )
39+ interruptible_sleep ( sleep_interval )
40+ end
41+ ensure
42+ SolidQueue . instrument ( :shutdown_process , process : self ) do
43+ run_callbacks ( :shutdown ) { shutdown }
5944 end
6045 end
6146
@@ -67,10 +52,27 @@ def unschedule_recurring_tasks
6752 recurring_schedule . unschedule_tasks
6853 end
6954
55+ def reload_schedule
56+ recurring_schedule . reload!
57+
58+ if recurring_schedule . changed?
59+ refresh_registered_process
60+ recurring_schedule . clear_changes
61+ end
62+ end
63+
64+ def dynamic_tasks_enabled?
65+ @dynamic_tasks_enabled
66+ end
67+
7068 def all_work_completed?
7169 recurring_schedule . empty?
7270 end
7371
72+ def sleep_interval
73+ dynamic_tasks_enabled? ? polling_interval : STATIC_SLEEP_INTERVAL
74+ end
75+
7476 def set_procline
7577 procline "scheduling #{ recurring_schedule . task_keys . join ( "," ) } "
7678 end
0 commit comments