sidekiq for processing

This commit is contained in:
Kyle Drake 2013-07-11 21:06:38 -04:00
parent 44b61170e5
commit 91b4d8aa14
6 changed files with 22 additions and 26 deletions

View file

@ -12,7 +12,7 @@ gem 'rubyzip'
gem 'rack-recaptcha', require: 'rack/recaptcha' gem 'rack-recaptcha', require: 'rack/recaptcha'
gem 'rmagick', require: nil gem 'rmagick', require: nil
gem 'selenium-webdriver', require: nil gem 'selenium-webdriver', require: nil
gem 'backburner' gem 'sidekiq'
gem 'ago' gem 'ago'
platform :mri do platform :mri do

View file

@ -5,18 +5,16 @@ GEM
ago (0.1.5) ago (0.1.5)
hoe (>= 1.12.2) hoe (>= 1.12.2)
ansi (1.4.3) ansi (1.4.3)
backburner (0.4.2)
beaneater (~> 0.3.1)
dante (~> 0.1.5)
bcrypt-ruby (3.0.1) bcrypt-ruby (3.0.1)
beaneater (0.3.1)
builder (3.2.0) builder (3.2.0)
celluloid (0.14.1)
timers (>= 1.0.0)
childprocess (0.3.9) childprocess (0.3.9)
ffi (~> 1.0, >= 1.0.11) ffi (~> 1.0, >= 1.0.11)
coderay (1.0.9) coderay (1.0.9)
columnize (0.3.6) columnize (0.3.6)
connection_pool (1.1.0)
crack (0.3.2) crack (0.3.2)
dante (0.1.5)
debugger (1.6.0) debugger (1.6.0)
columnize (>= 0.3.1) columnize (>= 0.3.1)
debugger-linecache (~> 1.2.0) debugger-linecache (~> 1.2.0)
@ -74,6 +72,8 @@ GEM
raindrops (0.10.0) raindrops (0.10.0)
rake (10.0.4) rake (10.0.4)
redis (3.0.4) redis (3.0.4)
redis-namespace (1.3.0)
redis (~> 3.0.0)
rmagick (2.13.2) rmagick (2.13.2)
rubyzip (0.9.9) rubyzip (0.9.9)
selenium-webdriver (2.33.0) selenium-webdriver (2.33.0)
@ -87,6 +87,12 @@ GEM
sequel (>= 3.39.0) sequel (>= 3.39.0)
shotgun (0.9) shotgun (0.9)
rack (>= 1.0) 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) simplecov (0.7.1)
multi_json (~> 1.0) multi_json (~> 1.0)
simplecov-html (~> 0.7.1) simplecov-html (~> 0.7.1)
@ -105,6 +111,7 @@ GEM
slop (3.4.5) slop (3.4.5)
temple (0.6.5) temple (0.6.5)
tilt (1.4.1) tilt (1.4.1)
timers (1.1.0)
unicorn (4.6.2) unicorn (4.6.2)
kgio (~> 2.6) kgio (~> 2.6)
rack rack
@ -119,7 +126,6 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
ago ago
backburner
bcrypt-ruby bcrypt-ruby
fabrication fabrication
faker faker
@ -147,6 +153,7 @@ DEPENDENCIES
sequel sequel
sequel_pg sequel_pg
shotgun shotgun
sidekiq
simplecov simplecov
sinatra sinatra
sinatra-flash sinatra-flash

View file

@ -1,5 +1,4 @@
require "rake/testtask" require "rake/testtask"
require 'backburner/tasks'
task :environment do task :environment do
require './environment.rb' require './environment.rb'
@ -37,5 +36,7 @@ end
desc 'Update screenshots' desc 'Update screenshots'
task :update_screenshots => [:environment] do 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 end

4
app.rb
View file

@ -234,7 +234,7 @@ post '/site_files/upload' do
FileUtils.mv params[:newfile][:tempfile].path, dest_path FileUtils.mv params[:newfile][:tempfile].path, dest_path
File.chmod(0640, dest_path) if self.class.production? 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 current_site.update updated_at: Time.now
@ -301,7 +301,7 @@ post '/site_files/save/:filename' do |filename|
FileUtils.mv tmpfile.path, dest_path FileUtils.mv tmpfile.path, dest_path
File.chmod(0640, dest_path) if self.class.production? 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 current_site.update updated_at: Time.now

View file

@ -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}") } 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) if defined?(Pry)
Pry.commands.alias_command 'c', 'continue' Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step' 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 Server.create ip: '127.0.0.1', slots_available: 999999
end end
Backburner.configure do |config|
config.max_job_retries = 10
config.retry_delay = 200
config.respond_timeout = 120
end
class Sinatra::Base class Sinatra::Base
alias_method :render_original, :render alias_method :render_original, :render
def render(engine, data, options = {}, locals = {}, &block) def render(engine, data, options = {}, locals = {}, &block)

View file

@ -1,12 +1,10 @@
require 'selenium-webdriver' require 'selenium-webdriver'
require 'RMagick' require 'RMagick'
class ScreenshotJob class ScreenshotWorker
include Backburner::Queue include Sidekiq::Worker
queue_priority 1000 def perform(username)
def self.perform(username)
screenshot = Tempfile.new 'neocities_screenshot' screenshot = Tempfile.new 'neocities_screenshot'
screenshot.close screenshot.close