Запланируйте задачу, используя whenver с пользовательским временем

#ruby-on-rails #timezone #sidekiq #whenever

#ruby-on-rails #Часовой пояс #sidekiq #всякий раз, когда

Вопрос:

config/schedule.rb

 def timezoned time
  Time.zone = "Pacific Time (US amp; Canada)"
  Time.zone.parse(time).utc
end

every 1.day, at: timezoned('5:30 am') do
  runner 'App1::Task1.perform_async'
end

every 1.day, at: timezoned('5:31 am') do
  runner 'App1::Task2.perform_async'
end

every 1.day, at: timezoned('5:33 am') do
  runner 'App2::Task1.perform_async'
end

every 1.day, at: timezoned('5:34 am') do
  runner 'App2::Task2.perform_async'
end

every 1.day, at: timezoned('5:36 am') do
  runner 'App3::Task1.perform_async'
end

every 1.day, at: timezoned('5:37 am') do
  runner 'App3::Task2.perform_async'
end

every 1.day, at: timezoned('5:40 am') do
  runner 'App4::Task1.perform_async'
end

every 1.day, at: timezoned('5:41 am') do
  runner 'App4::Task2.perform_async'
end

every 1.day, at: timezoned('5:42 am') do
  runner 'App4::Task3.perform_async'
end

every 1.day, at: timezoned('5:43 am') do
  runner 'App5::Task4.perform_async'
end
  

Я использую Sidekiq с whenever gem для планирования заданий в Rails.
Выше приведен мой schedule.rb. Есть ли способ планировать задачи лучшим способом, чем вышеописанный? (например, время 1 минута или время 2 минуты)

Будет полезно, если какой-либо лучший подход к планированию задачи, описанный выше.

Ответ №1:

Вариант 1:

поскольку это код на Ruby, вы можете динамически выполнять итерации по множеству приложений, задач и динамически настраивать планировщик

Вариант 2: На самом деле вы можете завершить выполнение каждого:minute ‘AppTaskRunner.perform_async’

И в AppTaskRunner запуск необходимой задачи для каждого приложения зависит от вашей логики

Комментарии:

1. Можете ли вы привести пример для варианта 1