Module | Delayed::Backend::Base::ClassMethods |
In: |
lib/delayed/backend/base.rb
|
Hook method that is called after a new worker is forked
# File lib/delayed/backend/base.rb, line 54 54: def after_fork 55: end
Hook method that is called before a new worker is forked
# File lib/delayed/backend/base.rb, line 50 50: def before_fork 51: end
Add a job to the queue
# File lib/delayed/backend/base.rb, line 10 10: def enqueue(*args) 11: options = { 12: :priority => Delayed::Worker.default_priority 13: }.merge!(args.extract_options!) 14: 15: options[:payload_object] ||= args.shift 16: 17: if args.size > 0 18: warn "[DEPRECATION] Passing multiple arguments to `#enqueue` is deprecated. Pass a hash with :priority and :run_at." 19: options[:priority] = args.first || options[:priority] 20: options[:run_at] = args[1] 21: end 22: 23: unless options[:payload_object].respond_to?(:perform) 24: raise ArgumentError, 'Cannot enqueue items which do not respond to perform' 25: end 26: 27: if Delayed::Worker.delay_jobs 28: self.new(options).tap do |job| 29: Delayed::Worker.lifecycle.run_callbacks(:enqueue, job) do 30: job.hook(:enqueue) 31: job.save 32: end 33: end 34: else 35: Delayed::Job.new(:payload_object => options[:payload_object]).tap do |job| 36: job.invoke_job 37: end 38: end 39: end
# File lib/delayed/backend/base.rb, line 41 41: def reserve(worker, max_run_time = Worker.max_run_time) 42: # We get up to 5 jobs from the db. In case we cannot get exclusive access to a job we try the next. 43: # this leads to a more even distribution of jobs across the worker processes 44: find_available(worker.name, 5, max_run_time).detect do |job| 45: job.lock_exclusively!(max_run_time, worker.name) 46: end 47: end