Merge pull request #1844 from dsander/fixed-schedule-times

Run every_X schedules on fixed times
This commit is contained in:
Dominik Sander 2017-01-05 17:42:00 +01:00 committed by GitHub
commit 89a9f2594f
4 changed files with 21 additions and 7 deletions

View file

@ -118,7 +118,7 @@ gem 'multi_xml'
gem 'nokogiri'
gem 'omniauth', '~> 1.3.1'
gem 'rails', '~> 5.0.1'
gem 'rufus-scheduler', '~> 3.0.8', require: false
gem 'rufus-scheduler', '~> 3.3.2', require: false
gem 'sass-rails', '~> 5.0.6'
gem 'select2-rails', '~> 3.5.4'
gem 'spectrum-rails'

View file

@ -479,7 +479,7 @@ GEM
rest-client
ruby-growl (4.1)
uuid (~> 2.3, >= 2.3.5)
rufus-scheduler (3.0.9)
rufus-scheduler (3.3.2)
tzinfo
safe_yaml (1.0.4)
sass (3.4.14)
@ -675,7 +675,7 @@ DEPENDENCIES
rspec-rails (~> 3.5.2)
rturk (~> 2.12.1)
ruby-growl (~> 4.1.0)
rufus-scheduler (~> 3.0.8)
rufus-scheduler (~> 3.3.2)
sass-rails (~> 5.0.6)
select2-rails (~> 3.5.4)
shoulda-matchers

View file

@ -19,8 +19,8 @@ class Agent < ActiveRecord::Base
load_types_in "Agents"
SCHEDULES = %w[every_1m every_2m every_5m every_10m every_30m every_1h every_2h every_5h every_12h every_1d every_2d every_7d
midnight 1am 2am 3am 4am 5am 6am 7am 8am 9am 10am 11am noon 1pm 2pm 3pm 4pm 5pm 6pm 7pm 8pm 9pm 10pm 11pm never]
SCHEDULES = %w[every_1m every_2m every_5m every_10m every_30m every_1h every_2h every_5h every_12h every_1d every_2d] + [OpenStruct.new(to_s: 'every_7d', humanize: 'Every Monday')] +
%w[midnight 1am 2am 3am 4am 5am 6am 7am 8am 9am 10am 11am noon 1pm 2pm 3pm 4pm 5pm 6pm 7pm 8pm 9pm 10pm 11pm never]
EVENT_RETENTION_SCHEDULES = [["Forever", 0], ['1 hour', 1.hour], ['6 hours', 6.hours], ["1 day", 1.day], *([2, 3, 4, 5, 7, 14, 21, 30, 45, 90, 180, 365].map {|n| ["#{n} days", n.days] })]

View file

@ -96,6 +96,20 @@ class HuginnScheduler < LongRunnable::Worker
include LongRunnable
FAILED_JOBS_TO_KEEP = 100
SCHEDULE_TO_CRON = {
'1m' => '*/1 * * * *',
'2m' => '*/2 * * * *',
'5m' => '*/5 * * * *',
'10m' => '*/10 * * * *',
'30m' => '*/30 * * * *',
'1h' => '0 * * * *',
'2h' => '0 */2 * * *',
'5h' => '0 */5 * * *',
'12h' => '0 */12 * * *',
'1d' => '0 0 * * *',
'2d' => '0 0 */2 * *',
'7d' => '0 0 * * 1',
}
def setup
tzinfo_friendly_timezone = ActiveSupport::TimeZone::MAPPING[ENV['TIMEZONE'].presence || "Pacific Time (US & Canada)"]
@ -116,8 +130,8 @@ class HuginnScheduler < LongRunnable::Worker
end
# Schedule repeating events.
%w[1m 2m 5m 10m 30m 1h 2h 5h 12h 1d 2d 7d].each do |schedule|
every schedule do
SCHEDULE_TO_CRON.keys.each do |schedule|
cron "#{SCHEDULE_TO_CRON[schedule]} #{tzinfo_friendly_timezone}" do
run_schedule "every_#{schedule}"
end
end