class LazarusProducer(Thread): def __init__(self, ip_address, topic='OryxInput', port='9092'): super(LazarusProducer, self).__init__() self.topic = topic self.kafka = KafkaClient(ip_address + ':' + '9092') self.producer = SimpleProducer(self.kafka) self.energy = CornellEnergyDataset() #EnergyDataset() self.weather = MetroDataset() def _produce(self): date, curr_time = self.energy.current_time() data = { 'date': date, 'time' : curr_time, 'energy': self.energy.energy_consumption(), 'weather': self.weather.publish_data()} # self.producer.ensure_topic_exists(self.topic) response = self.producer.send_messages(self.topic,json.dumps(data)) print "\n\n" print data print "\n\n" #print response def run(self): while True: time.sleep(1) self._produce()
def __init__(self, ip_address, topic='OryxInput', port='9092'): super(LazarusProducer, self).__init__() self.topic = topic self.kafka = KafkaClient(ip_address + ':' + '9092') self.producer = SimpleProducer(self.kafka) self.energy = CornellEnergyDataset() #EnergyDataset() self.weather = MetroDataset()
def publish_weather_data(self): metro = MetroDataset() while True: current_time = datetime.datetime.now().strftime('%d/%m/%y %H:%M') date_time = current_time.split(" ") time_now = date_time[1] time_list = time_now.split(":") minutes = time_list[1] interval_flag = int(minutes)/30.0 if interval_flag == 0.0 or interval_flag == 1.0: try: response = self.producer.send_messages(self.topic, json.dumps(metro.publish_data())) except LeaderNotAvailableError: time.sleep(1) response = self.producer.send_messages(self.topic, json.dumps(metro.publish_data())) print response time.sleep(70) self.producer.stop()
def publish_to_file(self): metro = MetroDataset() data = {} while True: try: current_time = datetime.datetime.now().strftime('%d/%m/%y %H:%M') date_time = current_time.split(" ") time_now = date_time[1] time_list = time_now.split(":") minutes = time_list[1] interval_flag = int(minutes)/30.0 if interval_flag == 0.0 or interval_flag == 1.0: metro_data = metro.publish_data() if data.has_key(metro_data['date']): if not data[metro_data['date']].has_key(metro_data['time']): data[metro_data['date']].update({metro_data['time']: metro_data['data']}) else: data[metro_data['date']] = {metro_data['time']: metro_data['data']} print data except: with open('data.json', 'w') as outfile: json.dump(data, outfile) sys.exit()