module SuckerPunch::Job::ClassMethods
Public Instance Methods
__run_perform(*args)
click to toggle source
# File lib/sucker_punch/job.rb, line 60 def __run_perform(*args) SuckerPunch::Counter::Busy.new(self.to_s).increment result = self.new.perform(*args) SuckerPunch::Counter::Processed.new(self.to_s).increment result rescue => ex SuckerPunch::Counter::Failed.new(self.to_s).increment SuckerPunch.exception_handler.call(ex, self, [*args]) ensure SuckerPunch::Counter::Busy.new(self.to_s).decrement end
max_jobs(num)
click to toggle source
# File lib/sucker_punch/job.rb, line 56 def max_jobs(num) self.num_jobs_max = num end
perform_async(*args)
click to toggle source
# File lib/sucker_punch/job.rb, line 35 def perform_async(*args) return unless SuckerPunch::RUNNING.true? queue = SuckerPunch::Queue.find_or_create(self.to_s, num_workers, num_jobs_max) queue.post { __run_perform(*args) } end
perform_in(interval, *args)
click to toggle source
# File lib/sucker_punch/job.rb, line 42 def perform_in(interval, *args) return unless SuckerPunch::RUNNING.true? queue = SuckerPunch::Queue.find_or_create(self.to_s, num_workers, num_jobs_max) job = Concurrent::ScheduledTask.execute(interval.to_f, args: args, executor: queue) do __run_perform(*args) end job.pending? end
workers(num)
click to toggle source
# File lib/sucker_punch/job.rb, line 52 def workers(num) self.num_workers = num end