#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)