Самый простой способ запускать пакетные задания каждые 5 минут в Rails 3 с Heroku? - PullRequest
2 голосов
/ 06 июля 2011

Задержанная работа, кажется, не устраивает меня, поскольку, ну, в общем, задерживает работу. Я хочу запускать работу каждые 5 минут в своем приложении Rails. Это возможно на Heroku?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 06 июля 2011

Я предлагаю комбинацию их Free Daily Cron и вышеупомянутого планирования DelayedJob.Один раз в день запускайте все отложенные задания (если вы выполняете 5-минутные интервалы, вам потребуется 288 заданий), чтобы проходить через день, и расставляйте их соответствующим образом.На самом деле нужен вышеупомянутый модуль.Из этого сообщения блога вы можете сделать следующее

Delayed::Job.enqueue PollTwitter.new(), 0, 1.minutes.from_now.getutc

, которое устанавливает флаг run_at в DelayedJob.По-видимому, это время, когда задание будет запущено.

0 голосов
/ 20 июня 2012

С недавнего времени вы можете планировать драгоценный камень, часовой механизм . Heroku официально поддерживает это, и вы можете найти их документацию здесь .

0 голосов
/ 06 июля 2011

В этом сообщении в блоге вы можете найти модуль для добавления некоторого планирования в DelayedJob.

module Jobs
  module ScheduledJob
    def self.included(base)
      base.extend(ClassMethods)
    end

    def perform_with_schedule
      Delayed::Job.enqueue self, 0, self.class.schedule.from_now.getutc
      perform_without_schedule
    end

    module ClassMethods
      def method_added(name)
        if name.to_s == "perform" && !@redefined
          @redefined = true
          alias_method_chain :perform, :schedule
        end
      end

      def schedule
        @schedule
      end

      def run_every(time)
        @schedule = time
      end  
    end

  end
end

Я использую это на одном из моих проектов, работает нормально!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...