Sha256: 26387d2044373d5e786ac119e359e87bdfab77cb15bf0e43080f18460137bb62
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
module Writefully module Tools class Dispatcher include Celluloid attr_reader :job def initialize every 1.second do async.heartbeat end end def get_job_data Writefully.redis.with { |c| c.spop 'jobs' } end def heartbeat @job = Marshal.load(get_job_data) run_job if is_job? end def run_job if retry_valid? then retry_job elsif job_valid? then dispatch end end def dispatch Celluloid::Actor[job[:worker]].perform(job[:message]) end def retry_job Celluloid::Actor[:retryer].retry(job) end def is_job? job.has_key?(:worker) and job.has_key?(:message) end def is_retry? is_job? and job[:message].has_key?(:tries) and job[:message].has_key?(:run) end def job_valid? is_job? and job.keys.count == 2 end def retry_valid? is_retry? and (job[:message][:run] == false) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
writefully-0.4.0 | lib/writefully/tools/dispatcher.rb |