Sha256: 70aa69aa9da60469e725c1d48f05655f0e349cb1754d870f31170f4ead838861
Contents?: true
Size: 1018 Bytes
Versions: 1
Compression:
Stored size: 1018 Bytes
Contents
class Fanforce::Worker def self.run(init_params, &worker_code) self.new(init_params, &worker_code) end def initialize(init_params, &worker_code) require_dependencies run_validations @init_params = init_params @worker_code = worker_code msg = iron_mq.queue(init_params['worker_id']).get #(timeout: 3600) (msg.nil?) ? (return) : run_worker(msg, 0) end def require_dependencies require '.pluginenv' require 'fanforce/api' require 'iron_mq' end def run_validations end def iron_mq @iron_mq ||= IronMQ::Client.new end def run_worker(msg, retries) params = Fanforce.decode_json(msg.body) @worker_code.call(params, retries) rescue => e params = (params.blank?) ? {original_body: msg.body} : {original_params: params} params[:retries] = retries + 1 params[:error_message] = e.message params[:error_backtrace] = e.backtrace Fanforce::Workers.iron.queue "#{@init_params['worker_id']}-RETRIES", params raise end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fanforce-workers-0.0.4.pre2 | lib/fanforce/workers/worker.rb |