Skip to content

Instantly share code, notes, and snippets.

@michaelglass
Last active December 23, 2015 09:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelglass/6612910 to your computer and use it in GitHub Desktop.
Save michaelglass/6612910 to your computer and use it in GitHub Desktop.
require 'logger'
begin
require 'protected_attributes'
rescue LoadError
end
require 'delayed_job_active_record'
Delayed::Worker.logger = Logger.new('/tmp/dj.log')
ENV['RAILS_ENV'] = 'test'
db_adapter, gemfile = ['mysql','gemfiles/mysql/4-0.gemfile']
config = YAML.load(File.read('spec/database.yml'))
ActiveRecord::Base.establish_connection config[db_adapter]
ActiveRecord::Base.logger = Delayed::Worker.logger
ActiveRecord::Migration.verbose = false
ActiveRecord::Schema.define do
create_table :delayed_jobs, :force => true do |table|
table.integer :priority, :default => 0
table.integer :attempts, :default => 0
table.text :handler
table.text :last_error
table.datetime :run_at
table.datetime :locked_at
table.datetime :failed_at
table.string :locked_by
table.string :queue
table.timestamps
end
add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
end
# Add this directory so the ActiveSupport autoloading works
ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)
class ReenqueueJob
def perform
Delayed::Backend::ActiveRecord::Job.enqueue ReenqueueJob.new
Delayed::Backend::ActiveRecord::Job.enqueue ReenqueueJob.new
end
end
def worker
@worker ||= Delayed::Worker.new
end
def perform(num_times = 10_000)
start = Time.now
last_performed = :got_to_last
successes = 0
num_times.times do
if worker.send(:reserve_and_run_one_job) == tru
successes += 1
end
if successes % 500 == 0
puts "completed #{successes} at #{successes / (Time.now - start)} jobs/s"
end
end
end
def enqueue_em(num_to_enqueue = 10)
num_to_enqueue.times { Delayed::Job.enqueue ReenqueueJob.new }
end
enqueue_em
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment