From 13dd77dd1ba8f53ac14a3f8d64e8e66b3f6d326d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 8 Apr 2019 16:27:23 +0200 Subject: [PATCH] Add tasks to generate and expire stats cache We're generating stats every 2 hours because it's less than the time it will take to generate stats for every process. Once stats are generated, this task should take less than a second. The regenerate task has been added so we can manually execute it. --- config/schedule.rb | 4 ++++ lib/tasks/stats.rake | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 lib/tasks/stats.rake diff --git a/config/schedule.rb b/config/schedule.rb index 25d5bf0c9..353190e5a 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -27,6 +27,10 @@ every 1.day, at: "5:00 am" do rake "-s sitemap:refresh" end +every 2.hours do + rake "-s stats:generate" +end + # Temporally not send dashboard's notifications # every 1.day, at: "7:00 am" do # rake "dashboards:send_notifications" diff --git a/lib/tasks/stats.rake b/lib/tasks/stats.rake new file mode 100644 index 000000000..a454d88cd --- /dev/null +++ b/lib/tasks/stats.rake @@ -0,0 +1,24 @@ +namespace :stats do + desc "Generates stats which are not cached yet" + task generate: :environment do + Budget.find_each do |budget| + Budget::Stats.new(budget).generate + print "." + end + + Poll.find_each do |poll| + Poll::Stats.new(poll).generate + print "." + end + end + + desc "Expires stats cache" + task expire_cache: :environment do + [Budget, Poll].each do |model_class| + model_class.find_each { |record| record.find_or_create_stats_version.touch } + end + end + + desc "Deletes stats cache and generates it again" + task regenerate: [:expire_cache, :generate] +end