Какой синтаксис запускает работу cron на героку каждый час? - PullRequest
0 голосов
/ 09 августа 2011

Я только что приобрел платную версию cron Heroku, чтобы выполнять некоторые задания каждый час.То, что я хотел бы знать, - это синтаксис, который я должен использовать, чтобы заставить его работать каждый час.Пока у меня есть это, не могли бы вы сказать мне, если это правильно:

desc "Tasks called by the Heroku cron add-on"
task :cron => :environment do
  if Time.now.hour % 1 == 0 # run every sixty minutes?

    puts "Updating view counts...."
    Video.update_view_counts  
    puts "Finished....."

    puts "Updating video scores...."
    VideoPost.update_score_caches
    puts "Finished....."

    puts "Erasing videos....."
    Video.erase_videos!
    puts "Finished....."

  end

  if Time.now.hour == 0 # run at midnight

  end
end

Мне нужно знать, если эта строка с 1 это путь пойти ...

if Time.now.hour % 1 == 0

Заранее благодарим за помощь,

С наилучшими пожеланиями.

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Если вы хотите работать каждый час, не беспокойтесь о проверке. Heroku будет запускать его каждый час.

Поскольку% 1 всегда будет возвращать 0, лучше просто иметь:

desc "Tasks called by the Heroku cron add-on"
task :cron => :environment do
  puts "Updating view counts...."
  Video.update_view_counts  
  puts "Finished....."
  #...

  if Time.now.hour == 1 #1am
    #...
  end

end

Кроме того, если вы хотите иметь возможность запускать Video.update_view_counts, когда вам это необходимо, вы можете вместо этого (после создания задачи rake):

Rake::Task["video:update_view_counts"].invoke

Таким образом, вы можете запустить его внутри cron и вручную при необходимости

1 голос
/ 09 августа 2011

Так как у вас уже есть почасовой крон, вам не нужно проверять время запуска кода.

task :cron => :environment do

    #<--- hourly cron begins 
    puts "Updating view counts...."
    Video.update_view_counts  
    puts "Finished....."

    puts "Updating video scores...."
    VideoPost.update_score_caches
    puts "Finished....."

    puts "Erasing videos....."
    Video.erase_videos!
    puts "Finished....."
    #hourly cron ends  --->

    if Time.now.hour == 0 # run at midnight

    end  

end
...