1 """Server_Sent event messages receiver.
3 The tool receives and logs data from specified URI via SSE"""
9 from aiohttp_sse_client import client as sse_client
12 async def get_events():
13 conn = aiohttp.TCPConnector()
14 auth = aiohttp.BasicAuth(args.user, args.password)
15 client = aiohttp.ClientSession(connector=conn, auth=auth)
16 async with sse_client.EventSource(
17 "http://" + args.controller + ":8181" + args.uri, session=client
20 async for event in event_source:
22 except ConnectionError:
26 def parse_arguments():
27 """Use argparse to get arguments,
32 parser = argparse.ArgumentParser()
33 parser.add_argument("--controller", default="127.0.0.1", help="Controller IP")
36 default="/rests/notif/data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE",
37 help="URI endpoint to connect",
40 "--count", type=int, default=1, help="Number of messages to receive"
42 parser.add_argument("--user", default="admin", help="Controller User")
43 parser.add_argument("--password", default="admin", help="Controller Password")
44 parser.add_argument("--logfile", default="ssereceiver.log", help="Log file name")
53 args = parser.parse_args()
58 loop = asyncio.get_event_loop()
59 loop.run_until_complete(get_events())
60 loop.run_until_complete(asyncio.sleep(0))
64 if __name__ == "__main__":
65 args = parse_arguments()
66 logger = logging.getLogger("logger")
67 log_formatter = logging.Formatter("%(asctime)s %(levelname)s: %(message)s")
68 console_handler = logging.StreamHandler()
69 file_handler = logging.FileHandler(args.logfile, mode="w")
70 console_handler.setFormatter(log_formatter)
71 file_handler.setFormatter(log_formatter)
72 logger.addHandler(console_handler)
73 logger.addHandler(file_handler)
74 logger.setLevel(args.loglevel)
75 logger.info("Starting to receive server-sent event messages")