discourse/app/jobs/scheduled/topic_timer_enqueuer.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

26 lines
694 B
Ruby
Raw Normal View History

# frozen_string_literal: true
module Jobs
# Runs periodically to look through topic timers that are ready to execute,
# and enqueues their related jobs.
#
# Any leftovers will be caught in the next run, because execute_at will
# be < now, and topic timers that have run are deleted on completion or
# otherwise have their execute_at time modified.
class TopicTimerEnqueuer < ::Jobs::Scheduled
every 1.minute
def execute(_args = nil)
timers = TopicTimer.pending_timers
timers.find_each do |timer|
# the typed job may not enqueue if it has already
# been scheduled with enqueue_at
timer.enqueue_typed_job
end
end
end
end