Class: WorkerKiller::DelayedJobPlugin
- Inherits:
-
Object
- Object
- WorkerKiller::DelayedJobPlugin
- Defined in:
- lib/worker_killer/delayed_job_plugin.rb
Direct Known Subclasses
Defined Under Namespace
Classes: JobsLimiter, OOMLimiter
Instance Attribute Summary collapse
-
#killer ⇒ Object
readonly
Returns the value of attribute killer.
-
#limiter ⇒ Object
readonly
Returns the value of attribute limiter.
-
#reaction ⇒ Object
readonly
Returns the value of attribute reaction.
Instance Method Summary collapse
- #configure_lifecycle(lifecycle) ⇒ Object
-
#initialize(klass:, killer:, reaction: nil, **opts) ⇒ DelayedJobPlugin
constructor
A new instance of DelayedJobPlugin.
- #new(lifecycle = Delayed::Worker.lifecycle, *_args) ⇒ Object
Constructor Details
#initialize(klass:, killer:, reaction: nil, **opts) ⇒ DelayedJobPlugin
Returns a new instance of DelayedJobPlugin.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 9 def initialize(klass:, killer:, reaction: nil, **opts) @killer = killer @reaction = reaction || proc do |l, k, dj| k.kill(l.started_at, dj: dj) end @limiter = klass.new(**opts) @time_to_burn = false end |
Instance Attribute Details
#killer ⇒ Object (readonly)
Returns the value of attribute killer.
7 8 9 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 7 def killer @killer end |
#limiter ⇒ Object (readonly)
Returns the value of attribute limiter.
7 8 9 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 7 def limiter @limiter end |
#reaction ⇒ Object (readonly)
Returns the value of attribute reaction.
7 8 9 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 7 def reaction @reaction end |
Instance Method Details
#configure_lifecycle(lifecycle) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 24 def configure_lifecycle(lifecycle) # Count condition after every job lifecycle.after(:perform) do |_worker, *_args| @time_to_burn ||= limiter.check end # Stop execution only after whole loop completed lifecycle.after(:loop) do |worker, *_args| @time_to_burn ||= limiter.check reaction.call(limiter, killer, worker) if @time_to_burn end end |
#new(lifecycle = Delayed::Worker.lifecycle, *_args) ⇒ Object
20 21 22 |
# File 'lib/worker_killer/delayed_job_plugin.rb', line 20 def new(lifecycle = Delayed::Worker.lifecycle, *_args) configure_lifecycle(lifecycle) end |