Module: Delayed::Backend::Base::ClassMethods
- Defined in:
- lib/delayed/backend/base.rb
Instance Method Summary collapse
-
#after_fork ⇒ Object
Hook method that is called after a new worker is forked.
-
#before_fork ⇒ Object
Hook method that is called before a new worker is forked.
-
#enqueue(*args) ⇒ Object
Add a job to the queue.
- #reserve(worker, max_run_time = Worker.max_run_time) ⇒ Object
- #work_off(num = 100) ⇒ Object
Instance Method Details
#after_fork ⇒ Object
Hook method that is called after a new worker is forked
49 50 |
# File 'lib/delayed/backend/base.rb', line 49 def after_fork end |
#before_fork ⇒ Object
Hook method that is called before a new worker is forked
45 46 |
# File 'lib/delayed/backend/base.rb', line 45 def before_fork end |
#enqueue(*args) ⇒ Object
Add a job to the queue
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/delayed/backend/base.rb', line 10 def enqueue(*args) = { :priority => Delayed::Worker.default_priority }.merge!(args.) [:payload_object] ||= args.shift if args.size > 0 warn "[DEPRECATION] Passing multiple arguments to `#enqueue` is deprecated. Pass a hash with :priority and :run_at." [:priority] = args.first || [:priority] [:run_at] = args[1] end unless [:payload_object].respond_to?(:perform) raise ArgumentError, 'Cannot enqueue items which do not respond to perform' end if Delayed::Worker.delay_jobs self.create().tap do |job| job.hook(:enqueue) end else [:payload_object].perform end end |
#reserve(worker, max_run_time = Worker.max_run_time) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/delayed/backend/base.rb', line 36 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, 5, max_run_time).detect do |job| job.lock_exclusively!(max_run_time, worker.name) end end |