From c8e21abea5edad83171bcef75be65f0c722515ac Mon Sep 17 00:00:00 2001 From: AnthorNet Date: Mon, 4 May 2015 13:29:10 +0200 Subject: [PATCH] Added monitor first draft --- setup.py | 1 + src/eddn/Monitor.py | 52 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/eddn/Monitor.py diff --git a/setup.py b/setup.py index 280c8ec..d23f9ce 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,7 @@ setup( 'console_scripts': [ 'eddn-gateway = eddn.Gateway:main', 'eddn-relay = eddn.Relay:main', + 'eddn-monitor = eddn.Monitor:main', ], } ) diff --git a/src/eddn/Monitor.py b/src/eddn/Monitor.py new file mode 100644 index 0000000..ce69daa --- /dev/null +++ b/src/eddn/Monitor.py @@ -0,0 +1,52 @@ +""" +Relays sit below an announcer, or another relay, and simply repeat what +they receive over PUB/SUB. +""" +# Logging has to be configured first before we do anything. +import logging +from threading import Thread + +logger = logging.getLogger(__name__) +import zlib + +import gevent +import simplejson +import zmq.green as zmq +from bottle import get, response, run as bottle_run +from eddn._Conf.Settings import Settings, loadConfig + +from gevent import monkey +monkey.patch_all() + +class Monitor(Thread): + + def run(self): + context = zmq.Context() + + receiver = context.socket(zmq.SUB) + receiver.setsockopt(zmq.SUBSCRIBE, '') + + for binding in Settings.RELAY_RECEIVER_BINDINGS: + receiver.connect(binding) + + def monitor_worker(message): + if Settings.RELAY_DECOMPRESS_MESSAGES: + message = zlib.decompress(message) + + # Here we monitor different types of messages + + + while True: + inboundMessage = receiver.recv() + gevent.spawn(relay_monitor, inboundMessage) + + +def main(): + loadConfig() + m = Monitor() + m.start() + bottle_run(host='0.0.0.0', port=9091, server='gevent') + + +if __name__ == '__main__': + main()