Add logger and better exception handling

This commit is contained in:
zewelor
2017-11-24 08:53:21 +01:00
parent d463345707
commit 09d1332b92
3 changed files with 49 additions and 12 deletions
+29 -5
View File
@@ -1,27 +1,51 @@
import logging
import sys
if sys.version_info < (3,4):
print("To use this script you need python 3.4 or newer! got %s" % sys.version_info)
sys.exit(1)
from logger import _LOGGER
import argparse
from queue import Queue from queue import Queue
from apscheduler.schedulers.background import BackgroundScheduler
from config import settings from config import settings
from mqtt import MqttClient from mqtt import MqttClient
from workers_manager import WorkersManager from workers_manager import WorkersManager
from apscheduler.schedulers.background import BackgroundScheduler
parser = argparse.ArgumentParser()
parser.add_argument('-d', '--debug', action='store_true', default=False)
parsed = parser.parse_args()
if parsed.debug:
_LOGGER.setLevel(logging.DEBUG)
else:
_LOGGER.setLevel(logging.INFO)
queue = Queue() queue = Queue()
scheduler = BackgroundScheduler() scheduler = BackgroundScheduler()
mqtt = MqttClient(settings['mqtt']) mqtt = MqttClient(settings['mqtt'])
manager = WorkersManager(settings['workers']) manager = WorkersManager(settings['workers'])
_LOGGER.info('Starting')
for worker_name, interval in manager.interval_enabled_workers.items(): for worker_name, interval in manager.interval_enabled_workers.items():
_LOGGER.debug("Added: %s with %d seconds interval" % (worker_name, interval))
queue.put([worker_name]) queue.put([worker_name])
scheduler.add_job(lambda x: queue.put([x]), 'interval', seconds=interval, args=[worker_name]) scheduler.add_job(lambda x: queue.put([x]), 'interval', seconds=interval, args=[worker_name])
scheduler.start() scheduler.start()
while True: running = True
try:
while running:
for worker_name in queue.get(block=True): for worker_name in queue.get(block=True):
try: try:
mqtt.publish(manager.update(worker_name)) mqtt.publish(manager.update(worker_name))
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit):
raise raise
except: except:
print('Some error') _LOGGER.info('Some error')
except KeyboardInterrupt:
running = False
_LOGGER.info('Exiting allowing jobs to finish. If you need force exit use kill')
+6
View File
@@ -0,0 +1,6 @@
import logging
import sys
_LOGGER = logging.getLogger('bt-mqtt-gw')
_LOGGER.addHandler(logging.StreamHandler(sys.stdout))
+8 -1
View File
@@ -1,11 +1,12 @@
from logger import _LOGGER
import paho.mqtt.publish as publish import paho.mqtt.publish as publish
class MqttClient: class MqttClient:
def __init__(self, config): def __init__(self, config):
self._config = config self._config = config
def publish(self, messages): def publish(self, messages):
_LOGGER.debug(messages)
publish.multiple(list(map(lambda m: m.as_dict, messages)), publish.multiple(list(map(lambda m: m.as_dict, messages)),
hostname=self.hostname, hostname=self.hostname,
auth={'username': self.username, 'password': self.password}) auth={'username': self.username, 'password': self.password})
@@ -46,3 +47,9 @@ class MqttMessage:
'topic': self.topic, 'topic': self.topic,
'payload': self.payload 'payload': self.payload
} }
def __repr__(self):
return self.as_dict.__str__()
def __str__(self):
return self.__repr__()