Rails как создать отложенное задание для рейк-такса?

#ruby-on-rails #ruby #ruby-on-rails-3 #delayed-job

#ruby-on-rails #ruby #ruby-on-rails-3 #отложенное задание

Вопрос:

Как мне создать отложенное задание для рейкстага, которое должно выполняться каждые 15 минут?

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

1. На какой платформе вы работаете? У меня есть задачи (в окне Windows), которые выполняются каждый день с использованием планировщика Windows. Другое окно (Linux) Я использую cron для выполнения ежедневных заданий.

2. Я использую heroku, поэтому мне нужно отложенное задание

Ответ №1:

Вы можете попробовать: https://github.com/defunkt/resque

Ответ №2:

Я использую Resque Redis с Heroku. Отложенное задание также в значительной степени поддерживается в их облачном сервисе.

В lib/tasks/cron.rb

 desc "This task is called by the Heroku cron add-on"
task :cron => :environment do

  def resubmit_pending_jobs
    Resque.enqueue(SomeJob, job.id)
  end
end
  

Один из способов, который я могу придумать, — это использовать аддон cron, предлагаемый Heroku, который выполняет это каждый час (а не 15 минут). Возможно, приведенный выше блок кода поможет вам найти аналогичную реализацию для Отложенного задания.

В случае, если вы заинтересованы в повторной настройке с помощью RedisToGo и Heroku, пожалуйста, ознакомьтесь с этим руководством.

Надеюсь, это поможет!

Ответ №3:

Взгляните на SimpleWorker. Это облачная фоновая обработка / рабочая очередь для приложений Ruby. Это дополнение для Heroku.

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

 worker = SomeWorker.new
 # Задайте атрибуты для worker, которые будут использоваться здесь 
 рабочий.расписание (:start_at => 1 минута, :run_every => 900)