From 91b4d8aa14d63cc1694c160f0a2e6993d72bf230 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 11 Jul 2013 21:06:38 -0400 Subject: [PATCH] sidekiq for processing --- Gemfile | 2 +- Gemfile.lock | 19 +++++++++++++------ Rakefile | 5 +++-- app.rb | 4 ++-- environment.rb | 10 ---------- .../screenshot_worker.rb | 8 +++----- 6 files changed, 22 insertions(+), 26 deletions(-) rename jobs/screenshot_job.rb => workers/screenshot_worker.rb (91%) diff --git a/Gemfile b/Gemfile index 08910671..929b097d 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ gem 'rubyzip' gem 'rack-recaptcha', require: 'rack/recaptcha' gem 'rmagick', require: nil gem 'selenium-webdriver', require: nil -gem 'backburner' +gem 'sidekiq' gem 'ago' platform :mri do diff --git a/Gemfile.lock b/Gemfile.lock index 06cf4c1e..6a02b608 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,18 +5,16 @@ GEM ago (0.1.5) hoe (>= 1.12.2) ansi (1.4.3) - backburner (0.4.2) - beaneater (~> 0.3.1) - dante (~> 0.1.5) bcrypt-ruby (3.0.1) - beaneater (0.3.1) builder (3.2.0) + celluloid (0.14.1) + timers (>= 1.0.0) childprocess (0.3.9) ffi (~> 1.0, >= 1.0.11) coderay (1.0.9) columnize (0.3.6) + connection_pool (1.1.0) crack (0.3.2) - dante (0.1.5) debugger (1.6.0) columnize (>= 0.3.1) debugger-linecache (~> 1.2.0) @@ -74,6 +72,8 @@ GEM raindrops (0.10.0) rake (10.0.4) redis (3.0.4) + redis-namespace (1.3.0) + redis (~> 3.0.0) rmagick (2.13.2) rubyzip (0.9.9) selenium-webdriver (2.33.0) @@ -87,6 +87,12 @@ GEM sequel (>= 3.39.0) shotgun (0.9) rack (>= 1.0) + sidekiq (2.12.4) + celluloid (>= 0.14.1) + connection_pool (>= 1.0.0) + json + redis (>= 3.0) + redis-namespace simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) @@ -105,6 +111,7 @@ GEM slop (3.4.5) temple (0.6.5) tilt (1.4.1) + timers (1.1.0) unicorn (4.6.2) kgio (~> 2.6) rack @@ -119,7 +126,6 @@ PLATFORMS DEPENDENCIES ago - backburner bcrypt-ruby fabrication faker @@ -147,6 +153,7 @@ DEPENDENCIES sequel sequel_pg shotgun + sidekiq simplecov sinatra sinatra-flash diff --git a/Rakefile b/Rakefile index bec7be5a..6d1f2105 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,4 @@ require "rake/testtask" -require 'backburner/tasks' task :environment do require './environment.rb' @@ -37,5 +36,7 @@ end desc 'Update screenshots' task :update_screenshots => [:environment] do - Site.select(:username).filter(is_banned: false).filter(~{updated_at: nil}).order(:updated_at.desc).all.collect {|s| Backburner.enqueue ScreenshotJob, s.username } + Site.select(:username).filter(is_banned: false).filter(~{updated_at: nil}).order(:updated_at.desc).all.collect {|s| + ScreenshotWorker.perform_async s.username + } end diff --git a/app.rb b/app.rb index 0fb7e2f5..c57b0d16 100644 --- a/app.rb +++ b/app.rb @@ -234,7 +234,7 @@ post '/site_files/upload' do FileUtils.mv params[:newfile][:tempfile].path, dest_path File.chmod(0640, dest_path) if self.class.production? - Backburner.enqueue(ScreenshotJob, current_site.username) if sanitized_filename =~ /index\.html/ + ScreenshotWorker.perform_async(current_site.username) if sanitized_filename =~ /index\.html/ current_site.update updated_at: Time.now @@ -301,7 +301,7 @@ post '/site_files/save/:filename' do |filename| FileUtils.mv tmpfile.path, dest_path File.chmod(0640, dest_path) if self.class.production? - Backburner.enqueue(ScreenshotJob, current_site.username) if sanitized_filename =~ /index\.html/ + ScreenshotWorker.perform_async(current_site.username) if sanitized_filename =~ /index\.html/ current_site.update updated_at: Time.now diff --git a/environment.rb b/environment.rb index 47b93768..0decbef7 100644 --- a/environment.rb +++ b/environment.rb @@ -18,10 +18,6 @@ DB = Sequel.connect $config['database'], sslmode: 'disable', max_connections: $c Dir.glob('workers/*.rb').each {|w| require File.join(DIR_ROOT, "/#{w}") } -Backburner.configure do |config| - config.default_worker = Backburner::Workers::ThreadsOnFork -end - if defined?(Pry) Pry.commands.alias_command 'c', 'continue' Pry.commands.alias_command 's', 'step' @@ -50,12 +46,6 @@ if ENV['RACK_ENV'] == 'development' && Server.count == 0 Server.create ip: '127.0.0.1', slots_available: 999999 end -Backburner.configure do |config| - config.max_job_retries = 10 - config.retry_delay = 200 - config.respond_timeout = 120 -end - class Sinatra::Base alias_method :render_original, :render def render(engine, data, options = {}, locals = {}, &block) diff --git a/jobs/screenshot_job.rb b/workers/screenshot_worker.rb similarity index 91% rename from jobs/screenshot_job.rb rename to workers/screenshot_worker.rb index fe88fe63..31f6658c 100644 --- a/jobs/screenshot_job.rb +++ b/workers/screenshot_worker.rb @@ -1,12 +1,10 @@ require 'selenium-webdriver' require 'RMagick' -class ScreenshotJob - include Backburner::Queue +class ScreenshotWorker + include Sidekiq::Worker - queue_priority 1000 - - def self.perform(username) + def perform(username) screenshot = Tempfile.new 'neocities_screenshot' screenshot.close