class SimpleMapReduce::Worker::PollingWorkersStatusWorker
Constants
- HTTP_JSON_HEADER
Public Instance Methods
perform(workers)
click to toggle source
# File lib/simple_map_reduce/worker/polling_workers_status_worker.rb, line 6 def perform(workers) logger.debug("begin polling workers: #{workers.keys}") workers.each do |id, worker| response = http_client(worker.url).get("/workers/#{worker.id}") body = JSON.parse(response.body, symbolize_names: true)[:worker] worker.aasm.current_state = body[:state].to_sym rescue => e logger.error(e.inspect) logger.error(e&.response&.inspect) logger.info("Worker #{worker.id} is removed from workers") workers.delete(id) end logger.debug("finish polling workers: #{workers.keys}") end
Private Instance Methods
http_client(url)
click to toggle source
# File lib/simple_map_reduce/worker/polling_workers_status_worker.rb, line 28 def http_client(url) ::Faraday.new( url: url, headers: HTTP_JSON_HEADER, request: { open_timeout: 5, timeout: 10 } ) do |faraday| faraday.response :logger faraday.response :raise_error faraday.adapter Faraday.default_adapter end end
logger()
click to toggle source
# File lib/simple_map_reduce/worker/polling_workers_status_worker.rb, line 43 def logger SimpleMapReduce.logger end