mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
REFACTOR: extract scheduler to the mini_scheduler gem
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
require "sidekiq/pausable"
|
||||
require "sidekiq/web"
|
||||
|
||||
Sidekiq.configure_client do |config|
|
||||
config.redis = Discourse.sidekiq_redis_config
|
||||
@@ -12,6 +13,24 @@ Sidekiq.configure_server do |config|
|
||||
end
|
||||
end
|
||||
|
||||
MiniScheduler.configure do |config|
|
||||
|
||||
config.redis = $redis
|
||||
|
||||
config.job_exception_handler do |ex, context|
|
||||
Discourse.handle_job_exception(ex, context)
|
||||
end
|
||||
|
||||
config.job_ran do |stat|
|
||||
DiscourseEvent.trigger(:scheduled_job_ran, stat)
|
||||
end
|
||||
|
||||
config.before_sidekiq_web_request do
|
||||
RailsMultisite::ConnectionManagement.establish_connection(db: 'default')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if Sidekiq.server?
|
||||
# defer queue should simply run in sidekiq
|
||||
Scheduler::Defer.async = false
|
||||
@@ -27,22 +46,7 @@ if Sidekiq.server?
|
||||
scheduler_hostname = ENV["UNICORN_SCHEDULER_HOSTNAME"]
|
||||
|
||||
if !scheduler_hostname || scheduler_hostname.split(',').include?(`hostname`.strip)
|
||||
require 'scheduler/scheduler'
|
||||
manager = Scheduler::Manager.new($redis.without_namespace)
|
||||
Scheduler::Manager.discover_schedules.each do |schedule|
|
||||
manager.ensure_schedule!(schedule)
|
||||
end
|
||||
Thread.new do
|
||||
while true
|
||||
begin
|
||||
manager.tick
|
||||
rescue => e
|
||||
# the show must go on
|
||||
Discourse.handle_job_exception(e, message: "While ticking scheduling manager")
|
||||
end
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
MiniScheduler.start
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require "sidekiq/web"
|
||||
require_dependency "scheduler/web"
|
||||
require "mini_scheduler/web"
|
||||
require_dependency "admin_constraint"
|
||||
require_dependency "staff_constraint"
|
||||
require_dependency "homepage_constraint"
|
||||
|
||||
Reference in New Issue
Block a user