mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
sidekiq for processing
This commit is contained in:
parent
44b61170e5
commit
91b4d8aa14
6 changed files with 22 additions and 26 deletions
2
Gemfile
2
Gemfile
|
@ -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
|
||||||
|
|
19
Gemfile.lock
19
Gemfile.lock
|
@ -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
|
||||||
|
|
5
Rakefile
5
Rakefile
|
@ -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
4
app.rb
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue