Module: Pegasus::Service::InstanceMethods

Included in:
Pegasus::Service
Defined in:
lib/pegasus/service/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#do_eval(x) ⇒ Object



35
36
37
# File 'lib/pegasus/service/instance_methods.rb', line 35

def do_eval x
  logger.info "#{self.class.name} eval: #{eval x}"
end

#do_noopObject



31
32
33
# File 'lib/pegasus/service/instance_methods.rb', line 31

def do_noop
  logger.info "#{self.class.name} NOOP"
end

#playObject



39
40
41
42
43
44
45
# File 'lib/pegasus/service/instance_methods.rb', line 39

def play
  while next_task = lpop(wait_queue_key)
    run_task next_task
    did_something = true
  end
  did_something
end

#run_task(taskspec = nil) ⇒ Object Also known as: call



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pegasus/service/instance_methods.rb', line 5

def run_task taskspec = nil
  taskspec or begin
    return unless pair = blpop(wait_queue_key, 10)
    taskspec = pair[1]
  end
  set processing_key, "#{Time.unix} #{taskspec}"
  queued_at, ticket_no, task_marshal = taskspec.split(' ', 3)
  args = serializer.load(task_marshal)
  logger.debug "running task #{args.inspect}"
  result = "-"
  begin
    send(*args)
  rescue Exception => e
    logger.error("ERROR running task #{taskspec.inspect}: #{e.message}:: #{e.backtrace.join("\n\t")}")
    result = serializer.dump(e)
    raise e if raise_errors
  end
  unless ticket_no == '-'
    logger.debug "posting ticket #{ticket_no}"
    rpush ticket_no, result
  end
  set processing_key, Time.unix
end