Sha256: d7eb8cc0e8d73c0b9a21ae6ac7597c49de2edef2487a0e45325a98ace3448567

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require 'rest-client'
require 'json'
require 'girl_friday'

module Khronos
  module Server

    class Runner < GirlFriday::WorkQueue
      attr_reader :queue

      def initialize(*args)
        @queue = self
        super(*args) do |schedule|
          self.process(schedule)
        end
      end

      def enqueue(schedule)
        puts "Khronos::Server::Runner#enqueue => #{schedule.inspect}"
        @queue.push(schedule.to_json)
      end

      def process(json)
        schedule = JSON.parse(json)
        puts "Khronos::Server::Runner#process => #{schedule.inspect}"

        if (url = schedule['task_url'])
          begin
            response = RestClient.get(url)
            puts "Callback: success. response length: #{response.length.inspect}"
          rescue Exception => e
            puts "Callback: error. (#{e.inspect})"
          end
          calculate_recurrency!(schedule)
        end
      end

      def calculate_recurrency!(schedule)
        url = "http://#{Config.instance.scheduler['host']}"
        url += ":#{Config.instance.scheduler['port']}" if Config.instance.scheduler['port']
        url += "/task"
        RestClient.patch(url, :id => schedule['id'])
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
khronos-0.0.3.pre2 lib/khronos/server/runner.rb