class RRRSpec::Worker
Attributes
key[R]
Public Class Methods
create(worker_type, hostname=RRRSpec.hostname)
click to toggle source
Public: Create a new worker. The worker returned is NOT appeared in Worker.list
.
# File lib/rrrspec/redis_models.rb, line 842 def self.create(worker_type, hostname=RRRSpec.hostname) worker_key = RRRSpec.make_key('rrrspec', 'worker', hostname) RRRSpec.redis.hset(worker_key, 'worker_type', worker_type) worker = new(worker_key) return worker end
list()
click to toggle source
Public: A list of the workers which are possibly available.
Returns an array of the workers
# File lib/rrrspec/redis_models.rb, line 853 def self.list RRRSpec.redis.smembers(RRRSpec.make_key('rrrspec', 'worker')).map do |key| new(key) end end
new(worker_key)
click to toggle source
# File lib/rrrspec/redis_models.rb, line 836 def initialize(worker_key) @key = worker_key end
Public Instance Methods
==(other)
click to toggle source
# File lib/rrrspec/redis_models.rb, line 864 def ==(other) @key == other.key end
current_taskset()
click to toggle source
Public: Current taskset
Returns a taskset or nil
# File lib/rrrspec/redis_models.rb, line 882 def current_taskset taskset_key = RRRSpec.redis.hget(key, 'taskset') if taskset_key.present? return Taskset.new(taskset_key) else nil end end
dequeue_taskset()
click to toggle source
Public: Dequeue the taskset from the taskset_queue
# File lib/rrrspec/redis_models.rb, line 906 def dequeue_taskset _, taskset_key = RRRSpec.redis.blpop(RRRSpec.make_key(key, 'worker_queue'), 0) return Taskset.new(taskset_key) end
enqueue_taskset(taskset)
click to toggle source
Public: Enqueue the taskset to the taskset_queue
# File lib/rrrspec/redis_models.rb, line 901 def enqueue_taskset(taskset) RRRSpec.redis.rpush(RRRSpec.make_key(key, 'worker_queue'), taskset.key) end
evict()
click to toggle source
Public: Remove myself from the worker list.
# File lib/rrrspec/redis_models.rb, line 860 def evict RRRSpec.redis.srem(RRRSpec.make_key('rrrspec', 'worker'), key) end
exist?()
click to toggle source
Public: Check its existence with heartbeat key.
Returns bool
# File lib/rrrspec/redis_models.rb, line 922 def exist? RRRSpec.redis.exists(RRRSpec.make_key(key, 'heartbeat')) end
heartbeat(time)
click to toggle source
Public: Maintain heartbeat
# File lib/rrrspec/redis_models.rb, line 927 def heartbeat(time) RRRSpec.redis.setex(RRRSpec.make_key(key, 'heartbeat'), time, "alive") RRRSpec.redis.sadd(RRRSpec.make_key('rrrspec', 'worker'), key) end
queue_empty?()
click to toggle source
Public: Checks whether the taskset_queue is empty.
# File lib/rrrspec/redis_models.rb, line 912 def queue_empty? RRRSpec.redis.llen(RRRSpec.make_key(key, 'worker_queue')) == 0 end
update_current_taskset(taskset)
click to toggle source
Public: Update the current taskset
# File lib/rrrspec/redis_models.rb, line 892 def update_current_taskset(taskset) if taskset.present? RRRSpec.redis.hset(key, 'taskset', taskset.key) else RRRSpec.redis.hset(key, 'taskset', nil) end end
worker_type()
click to toggle source
Public: The worker_type
# File lib/rrrspec/redis_models.rb, line 872 def worker_type RRRSpec.redis.hget(key, 'worker_type') end