Class: Qu::Delayed::Worker
- Inherits:
-
Object
- Object
- Qu::Delayed::Worker
- Includes:
- Logger
- Defined in:
- lib/qu/delayed/worker.rb
Defined Under Namespace
Classes: Abort
Instance Method Summary collapse
- #handle_signals ⇒ Object
- #hostname ⇒ Object
- #id ⇒ Object
- #pid ⇒ Object
- #poll_frequency ⇒ Object
- #start ⇒ Object
- #work(options = {:block => true}) ⇒ Object
Instance Method Details
#handle_signals ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/qu/delayed/worker.rb', line 15 def handle_signals logger.debug "Sheduler #{id} registering traps for INT and TERM signals" %W(INT TERM).each do |sig| trap(sig) do logger.info "Sheduler #{id} received #{sig}, shutting down" raise Abort end end end |
#hostname ⇒ Object
59 60 61 |
# File 'lib/qu/delayed/worker.rb', line 59 def hostname @hostname ||= `hostname`.strip end |
#id ⇒ Object
51 52 53 |
# File 'lib/qu/delayed/worker.rb', line 51 def id @id ||= "#{hostname}:#{pid}" end |
#pid ⇒ Object
55 56 57 |
# File 'lib/qu/delayed/worker.rb', line 55 def pid @pid ||= Process.pid end |
#poll_frequency ⇒ Object
11 12 13 |
# File 'lib/qu/delayed/worker.rb', line 11 def poll_frequency Qu.backend.poll_frequency end |
#start ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/qu/delayed/worker.rb', line 41 def start logger.warn "Sheduler #{id} starting" handle_signals loop { work } rescue Abort => e # Ok, we'll shut down, but give us a sec ensure logger.debug "Sheduler #{id} done" end |
#work(options = {:block => true}) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/qu/delayed/worker.rb', line 25 def work( = {:block => true}) loop do logger.debug { "Getting next delayed job" } if payload = Qu.backend.next_delayed_job return Qu.backend.enqueue(payload) end if [:block] sleep poll_frequency else break end end end |