module Delayed::Backend::Base::ClassMethods
Public Instance Methods
after_fork()
click to toggle source
Hook method that is called after a new worker is forked
# File lib/delayed/backend/base.rb, line 57 def after_fork end
before_fork()
click to toggle source
Hook method that is called before a new worker is forked
# File lib/delayed/backend/base.rb, line 53 def before_fork end
enqueue(*args)
click to toggle source
Add a job to the queue
# File lib/delayed/backend/base.rb, line 10 def enqueue(*args) # rubocop:disable CyclomaticComplexity options = args.extract_options! options[:payload_object] ||= args.shift options[:priority] ||= Delayed::Worker.default_priority if options[:queue].nil? if options[:payload_object].respond_to?(:queue_name) options[:queue] = options[:payload_object].queue_name end options[:queue] ||= Delayed::Worker.default_queue_name end if args.size > 0 warn '[DEPRECATION] Passing multiple arguments to `#enqueue` is deprecated. Pass a hash with :priority and :run_at.' options[:priority] = args.first || options[:priority] options[:run_at] = args[1] end unless options[:payload_object].respond_to?(:perform) raise ArgumentError, 'Cannot enqueue items which do not respond to perform' end new(options).tap do |job| Delayed::Worker.lifecycle.run_callbacks(:enqueue, job) do job.hook(:enqueue) Delayed::Worker.delay_jobs ? job.save : job.invoke_job end end end
recover_from(_error)
click to toggle source
Allow the backend to attempt recovery from reserve errors
# File lib/delayed/backend/base.rb, line 49 def recover_from(_error) end
reserve(worker, max_run_time = Worker.max_run_time)
click to toggle source
# File lib/delayed/backend/base.rb, line 40 def reserve(worker, max_run_time = Worker.max_run_time) # We get up to 5 jobs from the db. In case we cannot get exclusive access to a job we try the next. # this leads to a more even distribution of jobs across the worker processes find_available(worker.name, worker.read_ahead, max_run_time).detect do |job| job.lock_exclusively!(max_run_time, worker.name) end end
work_off(num = 100)
click to toggle source
# File lib/delayed/backend/base.rb, line 60 def work_off(num = 100) warn '[DEPRECATION] `Delayed::Job.work_off` is deprecated. Use `Delayed::Worker.new.work_off instead.' Delayed::Worker.new.work_off(num) end