Планирование одноразовых заданий в Rails

#ruby-on-rails #ruby #ruby-on-rails-4 #cron

#ruby-on-rails #ruby #ruby-on-rails-4 #cron

Вопрос:

Мне нужно запланировать задание в rails, где метод будет вызываться в модели. Я знаю, что есть несколько драгоценных камней на основе cron, но все они предназначены для повторяющихся заданий, где, поскольку мне нужно выполнить задание только один раз, в установленное время. Есть ли драгоценный камень, который сделает это?

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

1. Что-то в этом роде? serverfault.com/questions/111609 /…

2. @depa Да, это в основном то, что я ищу.

Ответ №1:

В Rails 4.2 будет установлена платформа Active Job framework для планирования заданий. Вы можете использовать драгоценный камень Active Job в Rails 4.1. Он служит стандартизированной оболочкой для нескольких систем массового обслуживания, включая Sidekiq и Resque (обе требуют Redis для обработки отложенных заданий). Использование Active Job дает вам гибкость при замене системы массового обслуживания, если это необходимо.

Вы можете запланировать задание с активным заданием следующим образом:

 MyJob.enqueue_at(5.hours.from_now, record)
  

Разработчики Rails намерены сделать это стандартным механизмом для планирования заданий.

Взгляните на rails-mailinglist-регистрация в качестве примера приложения, чтобы узнать, как использовать Active Job.

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

1. Большой поклонник твоей работы, Дэниел. Вы когда-нибудь использовали ActiveJob в качестве драгоценного камня с 4.1 или сразу перешли к Rails 4.2, чтобы использовать его? Я получаю uninitialized constant ActiveJob , когда пытаюсь использовать его как драгоценный камень с 4.1 и не могу определить, возможно это или нет.

2. После того, как они выпустили Rails 4.2.0.beta1, ActiveJob больше не был доступен как автономный gem. Теперь он объединен в Rails 4.2. Я использую Rails 4.2. Я не знаю, можно ли использовать ActiveJob с 4.1.

Ответ №2:

При развертывании в Heroku есть надстройка планировщика.

В противном случае вы можете использовать Sidekiq Sidetiq для достижения того, что вы ищете.

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

1. Согласно Sidetiq wiki, это для повторяющихся заданий, а не разовых. Это то, чего я пытаюсь избежать.

2. То же самое с планировщиком heroku.